2011-11-17 87 views
-3

我试过了Android兼容性包提供的示例。 FragmentTabsPager崩溃,并出现以下错误:Android兼容性包示例FragmentTabsPager崩溃

11-17 19:00:27.414: E/AndroidRuntime(5401): FATAL EXCEPTION: main 
11-17 19:00:27.414: E/AndroidRuntime(5401): java.lang.NoClassDefFoundError: com.example.android.supportv4.app.LoaderCustomSupport$AppListFragment 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at com.example.android.supportv4.app.FragmentTabsPager.onCreate(FragmentTabsPager.java:60) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread.access$2300(ActivityThread.java:126) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.os.Looper.loop(Looper.java:123) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread.main(ActivityThread.java:4633) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at java.lang.reflect.Method.invoke(Method.java:521) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at dalvik.system.NativeStart.main(Native Method) 

如何解决呢?

谢谢。

UPD 只想知道为什么有人投票结束? 我GOOGLE了这个,发现这里打开issue。还没有答案。我认为我的问题是合理的,值得关注。

+0

LoaderCustomSupportAppListFragment是,即使一个班?我不认为它存在于兼容性软件包中。 –

+0

你应该发布一些代码,你使用这个类的地方,以及你如何在你的代码中使用它。 –

+0

您是否使用'getSupportFragmentManager',而不是'getFragmentManager'?如上所述,尽管发布一些代码,这就是为什么你被拒绝,没有足够的信息。 – PJL

回答

8

这里有什么问题?
您收到NoClassDefFoundError。什么时候这种情况发生:

The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.

oracle documentation

你的类或部分是可利用的在编译时间,但不再在运行时可用。当您的Android项目设置为特定的目标API级别并使用其可用的类和方法时会发生这种情况。然后,您可以在Android版本较低的设备上运行该项目(假设您的minSdk已设置为允许在您的AndroidManifest中使用此功能,该示例项目默认为4)。突然之间,这些组件中的一些可能无法使用¹。你会得到这个错误。

如何解决?
将项目目标SDK更改为您想要支持的版本。当你这样做时,你应该看到错误标记,并在你选择的工具中编译问题,例如蚀。 如果将其设置为2.2。例如,您将看到该课程使用OnQueryTextListener,SearchViewArrayAdapter.addAll()(均在API 11中引入)。这些在API等级10或更低的设备上不可用。 为此功能构建解决方法应该解决问题。无论如何,考虑到这是示例代码,您应该牢记这些方法不可用。

TL; DR:
示例项目使用来自11级不属于在兼容性包API功能。在运行低于11的版本的设备上执行时,会引发此错误。

¹在这种情况下,一个接口,OnQueryTextListener

+0

梦幻般的答案。高度描述性和信息性。考虑到问题的情况,需要更多的细节。 – AedonEtLIRA