【发布时间】: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