设备轮换android上的致命错误NullPointerException

时间:2014-04-08 12:59:53

标签: android android-orientation

虽然对于手机我将使用相同的布局,无论方向如何,对于平板电脑,我有一个纵向布局和一个横向布局,因此忽略配置更改不是最佳解决方案。

当场景如下时,事情变得更加复杂 -

  1. 横向上,点击显示fragment 1 (left side)fragment 2 (right side)的标签1。 fragment 2包含button 1

  2. 然后点击了打开button 1 dialog fragment (right side) tab 1 fragment 1 (left side) fragment 2 (right side) NullPointerException fatal error : null java.lang.NullPointerException? at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1419)? at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)? at android.os.Handler.handleCallback(Handler.java:615)? at android.os.Handler.dispatchMessage(Handler.java:92)? at android.os.Looper.loop(Looper.java:137)? at android.app.ActivityThread.main(ActivityThread.java:4953)? at java.lang.reflect.Method.invokeNative(Native Method)? at java.lang.reflect.Method.invoke(Method.java:511)? at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)? at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)? at dalvik.system.NativeStart.main(Native Method) 仍处于打开状态。

    < / LI>
  3. 将设备旋转至纵向,应用程序崩溃。

  4. 目的是仅以纵向打开对话框片段(以横向打开)。

    运行调试程序,它运行所有必需的方法。这并未显示{{1}}。

    的位置

    堆栈跟踪并未指出确切的错误方法 -

    {{1}}

    任何方式?

1 个答案:

答案 0 :(得分:0)

这可能会帮助可能遇到类似错误的人:

在执行一系列测试用例以找出此崩溃的根本原因之后,最后它是代码中的一行是罪魁祸首。

这条线是 -

@Override
public void onDestroy()
{
    super.onDestroy();  
    tap.getEntriesByRule(view); // Culprit
}

<强>解释

这一行的问题是----

它解决了待处理交易问题。

当您处于片段fragNoPop时,当您旋转设备时,您将转到片段fragPop

在fragPop中,我们有一个罪魁祸首onDestroy(),它再次通过调用fragNoPop重定向到tap.getEntriesByRule(view);,该execPendingActions已在旋转时被销毁。所以现在再次附加导致一团糟。

一行足以导致{{1}}等错误。

因此,首先要检查此类活动方法。小心!