【问题标题】:Android Compatibility Library errorAndroid 兼容性库错误
【发布时间】:2011-07-17 04:56:04
【问题描述】:

有没有人尝试过 Android 上新的兼容性库的演示应用程序。 Here

我正在尝试基于 API 11 构建的 v4,当我尝试 Support4Demo 并单击片段演示中的选项卡和分页器时,我不断收到此错误

e07-16 21:32:06.890: 错误/AndroidRuntime(15315): java.lang.NoClassDefFoundError: com.example.android.supportv4.app.LoaderCustomSupport$AppListFragment 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 com.example.android.supportv4.app.FragmentTabs.onCreate(FragmentTabs.java:55) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1785) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 android.app.ActivityThread.access$1500(ActivityThread.java:132) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 android.os.Handler.dispatchMessage(Handler.java:99) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 android.os.Looper.loop(Looper.java:143) 07-16 21:32:06.890: 错误/AndroidRuntime(15315):在 android.app.ActivityThread.main(ActivityThread.java:4263) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 java.lang.reflect.Method.invokeNative(Native Method) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 java.lang.reflect.Method.invoke(Method.java:507) 07-16 21:32:06.890: 错误/AndroidRuntime(15315):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 07-16 21:32:06.890:错误/AndroidRuntime(15315):在 dalvik.system.NativeStart.main(Native Method)

谁能帮我解决这个问题?

【问题讨论】:

    标签: android compatibility


    【解决方案1】:

    找不到该类的原因是 AppListFragment 实现的接口之一 (OnQuerytextListener) 是在 SearchView 中定义的,而 SearchView 只能在 Honeycomb (API 11+) 中找到。

    public static class AppListFragment extends ListFragment implements OnQueryTextListener, LoaderManager.LoaderCallbacks<List<AppEntry>>
    {
    

    我已经搜索了兼容性 jar,但找不到与 SearchView 相关的任何内容,因此我认为这仅适用于 Honeycomb 及更高版本(并且在低于 Honeycomb 的目标上编译确实会阻止此工作。

    还有一些其他的失败原因相同,例如 Loader -> Throttle 然后按菜单 - 缺少方法。

    来自Compatibility Package 页面

    警告:请确保不要将标准 android 软件包与 android.support 库中的软件包混淆。某些代码完成工具可能会出错,尤其是在您针对最新版本的平台进行构建时。为了安全起见,请将构建目标设置为与您为 android:minSdkVersion 定义的版本相同的版本,并仔细检查支持库中也存在的类的导入语句,例如 SimpleCursorAdapter

    遵循他们自己的建议意味着整个项目无法编译 - 一半的示例类似乎依赖于高于 API 4 的东西。

    我的答案?有些示例很糟糕,并且依赖于不存在的代码。如果运气好的话,Google 会尽快更新它们以使其正常工作。

    哦,是的,您可以通过从 AppListFragment 中删除 OnQueryTextListener 和方法来暂时使其工作,但稍后它会因不同的问题而失败。

    【讨论】:

    • 这是正确的答案...klemzy 的答案只是一个丑陋的解决方法。
    • @Cristian:实践和理论解决方案。我喜欢 stackoverflow.com :)
    • 这也在code.google.com/p/android/issues/detail?id=18594 上进行了详细讨论,并概述了“修复”演示的其他步骤
    • 这真的不是一种解决方法。我仍然在 Fragment/Tabs/Custom、Fragment/Tabs 和 Pager/Contacts、Fragment/Tabs 和 Pager/Custom、Fragment/Tabs 和 Pager/Throttle、Loader/Custom、Loader/Throttle 上遇到异常。使用 Android 支持包 rev。 7.
    • '使用 Android 支持包 rev. 7.'可能是您看到的问题。这适用于原始版本,自那以后似乎已经进行了 7 次修订 - 我不怀疑任何问题都不同。
    【解决方案2】:

    我已经通过注释掉 FragmentTab.onCreate 和 FragmentTabPager.onCreate 中的正确行来解决这个问题。

    //mTabManager.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
    //        LoaderCustomSupport.AppListFragment.class, null);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2017-05-04
      • 2012-11-06
      • 1970-01-01
      相关资源
      最近更新 更多