当前位置:  开发笔记 > Android > 正文

尝试在空对象引用上调用虚方法'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()'

如何解决《尝试在空对象引用上调用虚方法'android.os.Handlerandroid.support.v4.app.FragmentHostCallback.getHandler()'》经验,为你挑选了1个好方法。

我的应用程序由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)
    ...

父片段内的代码行是:

viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);

ViewPageAdapter两个不为空!

我必须提到我Fragment的所有生命周期都在管理中,并且在适配器内部发生了null问题!并且当我使用Activityas而不是Fragment!!! 时,同样的适配器工作正常!



1> Mohsen Mirho..:

经过大量研究,看起来它是一个支持库问​​题:

带有片段和ViewPager的活动在配置更改时崩溃了
Android支持库问题24.1.0

我也找到了这个答案,但在我的代码中添加一个标志看起来很不寻常:

尝试在空对象上调用虚拟方法'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()'

我覆盖了finishUpdateFragmentPagerAdapter这样的方法,现在问题解决了!

@Override
public void finishUpdate(ViewGroup container) {
    try{
        super.finishUpdate(container);
    } catch (NullPointerException nullPointerException){
        System.out.println("Catch the NullPointerException in FragmentPagerAdapter.finishUpdate");
    }
}

任何更好的答案?请告诉我...

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有