我尝试了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 :(得分:8)
这里有什么问题?
你得到一个NoClassDefFoundError
。什么时候发生:
来自oracle documentation 的当前正在执行的搜索类定义存在 编译了类,但无法再找到定义。
您的类或其中的一部分在编译时可用,但在运行时不再可用。当您的Android项目设置为某个目标API级别并使用它的可用类和方法时,就会发生这种情况。然后在具有较低Android版本的设备上运行该项目(假设您的 如何解决? <强> TL; DR:强> ¹在这种情况下,界面minSdk
设置为在AndroidManifest中允许此项 - 默认情况下该样本项目为4)。突然间,其中一些组件可能无法使用¹。你会收到这个错误。
将项目目标SDK更改为您要支持的版本。当你这样做时,你应该看到错误标记并在你选择的工具中编译问题,例如:日食。
如果将其设置为2.2。例如,您会看到此类使用OnQueryTextListener
,SearchView
和ArrayAdapter.addAll()
(所有在API 11中引入)。这些在API级别10或更低级别的设备上不可用。
为此功能构建解决方法应解决此问题。无论如何,考虑到这是示例代码,您应该记住这些方法不可用。
示例项目使用11级的API功能,这些功能不在兼容包中。在运行低于11的版本的设备上执行时,会抛出此错误。 OnQueryTextListener