在FragmentManager上调用popBackstackImmediate()时出现getHandler()NullPointerException

时间:2016-07-27 14:24:29

标签: android android-fragments fragmentmanager

我的代码中有这个sime行:

getChildFragmentManager().popBackstackImmediate();

它有时会起作用,但经常崩溃。这是堆栈跟踪:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()' on a null object reference
          at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1646)
          at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:585)
          at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:600)
          at marg.uk.fourthoffice.fragments.BCMasterDetailFragment.popBackStack(MyMasterDetailFragment.java:140)
          at marg.uk.fourthoffice.activities.BCOfficeActivity.onBackPressed(MainActivity.java:173)
          at marg.uk.fourthoffice.fragments.BCSwipeableCardsFragment$1.onClick(MyOtherFragment.java:189)

知道哪里可能是个问题?

1 个答案:

答案 0 :(得分:1)

事实证明我的代码中存在错误。

我无法展示一个例子,因为我的Activity-Fragment架构存在许多问题,但主要问题是getChildFragmentManager实际上是空的,并且是从错误的片段调用的。

这发生在平板电脑(双窗格布局)上,其中有4个以上的片段同时存在。这是在错误的片段上调用的。

因此,如果您遇到类似的问题,您可能在内存中有多个相同片段的实例。确保从正确的实例中调用此方法。