Android兼容包示例FragmentTabsPager崩溃

Igo*_*pov -3 java android android-compatibility android-fragments

我尝试了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)
Run Code Online (Sandbox Code Playgroud)

我如何解决它?

谢谢.

UPD 只是想知道为什么有人投票结束?我用Google搜索了这个问题并 在此处找到了问题.还没有答案.我认为我的问题是合理的,值得关注.

小智 8

这有什么问题?
你得到一个NoClassDefFoundError.什么时候发生:

搜索的类定义在编译当前正在执行的类时存在,但无法再找到该定义.

来自oracle文档

您的类或其中的一部分在编译时可用,但在运行时不再可用.当您的Android项目设置为某个目标API级别并使用它的可用类和方法时,就会发生这种情况.然后在具有较低Android版本的设备上运行该项目(假设您minSdk在AndroidManifest中设置为允许此项 - 默认情况下该样本项目为4).突然间,其中一些组件可能无法使用¹.你会收到这个错误.

怎么解决?
将项目目标SDK更改为您要支持的版本.当你这样做时,你应该看到错误标记并在你选择的工具中编译问题,例如eclipse.如果将其设置为2.2.例如,你会看到这个类使用OnQueryTextListener,SearchView(在API 11的所有介绍).这些在API级别10或更低级别的设备上不可用.为此功能构建解决方法应解决此问题.无论如何,考虑到这是示例代码,您应该记住这些方法不可用.ArrayAdapter.addAll()

TL; DR:
示例项目使用11级的API功能,这些功能不在兼容包中.在运行低于11的版本的设备上执行时,会抛出此错误.

¹ 在这种情况下是一个界面,OnQueryTextListener