【问题标题】:android 4.0.3 ScrollingTabContainerView NullPointerExceptionandroid 4.0.3 ScrollingTabContainerView NullPointerException
【发布时间】:2013-02-11 15:03:21
【问题描述】:

我们的 Android 应用程序随机崩溃(很难重现该问题)并出现以下堆栈跟踪。当设备的方向从 logcat 日志中从纵向更改为横向时,就会出现这种情况。在 Android 4.0.3 版本的设备上也发现了此问题。所以想检查它是否是 4.0.3 的已知问题?从代码中不确定如何调试此问题,因为堆栈跟踪完全是 Android 平台,不涉及应用程序代码。

02-21 17:44:01.761 E/UncaughtException( 3344): java.lang.NullPointerException
02-21 17:44:01.761 E/UncaughtException( 3344):  at com.android.internal.widget.ScrollingTabContainerView.onItemSelected(ScrollingTabContainerView.java:352)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.AdapterView.fireOnSelected(AdapterView.java:882)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.AdapterView.selectionChanged(AdapterView.java:865)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.AdapterView.checkSelectionChanged(AdapterView.java:1017)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.AdapterView.handleDataChanged(AdapterView.java:999)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:179)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.Spinner.onMeasure(Spinner.java:285)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.View.measure(View.java:12723)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.HorizontalScrollView.measureChildWithMargins(HorizontalScrollView.java:1159)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.HorizontalScrollView.onMeasure(HorizontalScrollView.java:303)
02-21 17:44:01.761 E/UncaughtException( 3344):  at com.android.internal.widget.ScrollingTabContainerView.onMeasure(ScrollingTabContainerView.java:117)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.View.measure(View.java:12723)
02-21 17:44:01.761 E/UncaughtException( 3344):  at com.android.internal.widget.ActionBarView.onMeasure(ActionBarView.java:878)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.View.measure(View.java:12723)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
02-21 17:44:01.761 E/UncaughtException( 3344):  at com.android.internal.widget.ActionBarContainer.onMeasure(ActionBarContainer.java:173)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.View.measure(View.java:12723)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.View.measure(View.java:12723)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
02-21 17:44:01.761 E/UncaughtException( 3344):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.View.measure(View.java:12723)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.os.Looper.loop(Looper.java:137)
02-21 17:44:01.761 E/UncaughtException( 3344):  at android.app.ActivityThread.main(ActivityThread.java:4424)
02-21 17:44:01.761 E/UncaughtException( 3344):  at java.lang.reflect.Method.invokeNative(Native Method)
02-21 17:44:01.761 E/UncaughtException( 3344):  at java.lang.reflect.Method.invoke(Method.java:511)
02-21 17:44:01.761 E/UncaughtException( 3344):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-21 17:44:01.761 E/UncaughtException( 3344):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-21 17:44:01.761 E/UncaughtException( 3344):  at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 这些信息还不够,不幸的是这个日志没有告诉我们什么时候应用程序崩溃,当这个问题再次发生时尝试获取下一个文件“/data/anr/traces.txt”,这个文件保存应用程序崩溃的其他日志。也许有必要查看一些代码并了解更多关于是什么构成了应用程序的信息。
  • 谢谢。 ANR traces.txt 仅包含几个月前的日志,直到昨天才可能是真的,因为我几乎不使用这个特定的平板电脑,但是今天和昨天我有很多不存在的崩溃。我只在Android 4.0.3遇到崩溃,其他版本都可以。它发生在方向改变时。问题是我看不到它是在哪里(或是否)从我自己的代码启动的。
  • 当我删除 ActionBarSherlock 并切换到 Android Actionbar(不是 ActionBarCompat)时,我注意到这是一个缺失的类。我正在编辑我的应用程序以获得 ICS+ 支持。你是从 ActionBarSherlock 切换过来的吗?
  • 不,我没有从 ActionBarSherlock 切换。当我切换回 android:windowActionBarOverlay=false 时问题又回来了。我的崩溃日志还显示了 4.0.4 设备。

标签: android nullpointerexception


【解决方案1】:

我真的不知道这个错误是从哪里来的。我通过更改修复它

    <item name="android:windowActionBarOverlay">false</item>

进入

    <item name="android:windowActionBarOverlay">true</item>

在我的 Android v15 的主要风格中。对于这个 Android 版本,它让我的应用程序变得不那么漂亮了,但这没关系。我希望这只是 4.0.3 的错误,我有 6 台平板电脑和其他 Android 版本都运行良好。

【讨论】:

  • 不能解决问题。我实现了这个并且仍然在 API 级别 15 上看到这些 NPE。
猜你喜欢
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2012-08-18
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多