【问题标题】:NullPointerException in appcompat-v22 for Eclair devices适用于 Eclair 设备的 appcompat-v22 中的 NullPointerException
【发布时间】:2015-08-17 23:57:54
【问题描述】:

更新到 appcompat-v22 后,有没有人针对 Android 2.1 测试过他们的应用?我的应用程序适用于 appcompat-v21 和 Android 2.2。我有一个带有工具栏的导航抽屉活动,我的片段列表作为我的活动内容。我正在使用构建工具 22.0.1、targetSdkVersion 22 和 appcompat-v7:22.0.0

我的崩溃似乎表明我的片段列表中的一个复选框可能是罪魁祸首,这是原始堆栈:

 Caused by: java.lang.NullPointerException
        at android.graphics.drawable.StateListDrawable.mutate(StateListDrawable.java:241)
        at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:140)
        at android.support.v7.internal.widget.TintTypedArray.getDrawable(TintTypedArray.java:62)
        at android.support.v7.internal.widget.TintCheckBox.<init>(TintCheckBox.java:49)
        at android.support.v7.internal.widget.TintCheckBox.<init>(TintCheckBox.java:41)
        at android.support.v7.app.ActionBarActivityDelegateBase.createView(ActionBarActivityDelegateBase.java:790)
        at android.support.v7.app.ActionBarActivity.onCreateView(ActionBarActivity.java:548)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:558)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
        at com.myapp.myapp.adapter.MyAdapter.getView(MyAdapter.java:79)
        at android.widget.AbsListView.obtainView(AbsListView.java:2818)
        at android.widget.ListView.makeAndAddView(ListView.java:1751)
        at android.widget.ListView.fillSpecific(ListView.java:1283)
        at android.widget.ListView.layoutChildren(ListView.java:1582)
        at android.widget.AbsListView.onLayout(AbsListView.java:2478)
        at android.view.View.layout(View.java:6892)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
        at android.view.View.layout(View.java:6892)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
        at android.view.View.layout(View.java:6892)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
        at android.view.View.layout(View.java:6892)
        at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:907)
        at android.view.View.layout(View.java:6892)
        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
        at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
        at android.view.View.layout(View.java:6892)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
        at android.view.View.layout(View.java:6892)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
        at android.view.View.layout(View.java:6892)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
        at android.view.View.layout(View.java:6892)
        at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
        at android.view.View.layout(View.java:6892)
        at android.view.ViewRoot.performTraversals(ViewRoot.java:1021)
        at android.view.ViewRoot.handleMessage(ViewRoot.java:1658)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:4363)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:521)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
        at dalvik.system.NativeStart.main(Native Method)

有没有人在将他们的应用更新到 v22 时看到过类似的情况?现在还有人支持 Android 2.1 吗?

【问题讨论】:

  • 没有人支持 2.1 了。根据 Google Play,即使是 2.2 也是 0.4% 的安装量。人们要么瞄准 2.3(约 7%)或 4.0(约 6%,但更容易支持)。 3.0太低了,没有上图。对一家公司来说,做更多事情没有经济意义,对业余爱好者来说,努力意义不大。您可以在developer.android.com/about/dashboards/index.html 查看统计信息
  • 我不知道 OP 是否在炒 Eclair。
  • 我不是在拖钓,我知道这个数字很低。我的应用程序在 0.2% 左右,但我很惊讶应该支持回 android 的“appcompat-v7” 2.1会像这样中断。我从这里的回复中得知我应该放手:)
  • appcompat-v7(您使用的是 22.0.0 版本)旨在支持 Eclair MR1(API 7、2.1.x),因此请在 AOSP issue tracker 上提交错误。这可能是由兼容着色实现触发的框架错误。
  • 感谢 Alan 的回复 - 我为此创建了一个新问题。 code.google.com/p/android/issues/detail?id=161539

标签: android android-appcompat


【解决方案1】:

此问题已在支持库 22.1.0 中得到修复(请参阅:https://code.google.com/p/android/issues/detail?id=161539

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多