Moh*_*ini 20 android nullpointerexception android-fragments fragmentpageradapter android-support-library
我的应用程序由4个片段组成,作为使用的父片段加载的选项卡FragmentPagerAdapter.
问题是,当我运行应用程序并按下并重新打开应用程序时,我收到此错误日志:
FATAL EXCEPTION: main
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.ensureExecReady(FragmentManager.java:1949)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1965)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:620)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:513)
...
Run Code Online (Sandbox Code Playgroud)
父片段内的代码行是:
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
Run Code Online (Sandbox Code Playgroud)
并ViewPage和Adapter两个不为空!
我必须提到我Fragment的所有生命周期都在管理中,并且在适配器内部发生了null问题!并且当我使用Activityas而不是Fragment!!! 时,同样的适配器工作正常!
Moh*_*ini 36
经过大量研究,看起来它是一个支持库问题:
我也找到了这个答案,但在我的代码中添加一个标志看起来很不寻常:
尝试在空对象上调用虚拟方法'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()'
我覆盖了finishUpdate我FragmentPagerAdapter这样的方法,现在问题解决了!
@Override
public void finishUpdate(ViewGroup container) {
try{
super.finishUpdate(container);
} catch (NullPointerException nullPointerException){
System.out.println("Catch the NullPointerException in FragmentPagerAdapter.finishUpdate");
}
}
Run Code Online (Sandbox Code Playgroud)
任何更好的答案?请告诉我...
Liu*_*Tom 12
我的项目也有同样的问题。但这是我的错。
为什么
在活动调用 onDestroy() 后,我在回调中调用 onBackPressed;
因为在调用 onDestroy() 之后 FragmentManager 中的 mHost 实例设置为 null。
当调用 onBackPressed 时,它将再次使用 mHost 实例。
@Override
public void onBackPressed() {
// super.onBackPressed();
finish();
}
Run Code Online (Sandbox Code Playgroud)
覆盖onBackPressedin 活动..
删除超级调用:super.onBackPressed
并调用完成。
| 归档时间: |
|
| 查看次数: |
12165 次 |
| 最近记录: |