2

我面临以下问题。NullPointerException:空对象上的android.support.v4.app.FragmentHostCallback.getHandler()引用

场景:

对于最初的时候,我立即登记直通应用程序,我能看到的标签,有内容,但是当我注销并尝试登录为viewpager相同的代码我得到异常以下:

的NullPointerException:尝试在一个空 对象引用调用虚拟方法 'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()'

但是当打开导航菜单并选择后,我得到的数据和标签显示viewpager显示选项卡。

内容: 我有2个选项卡

下面是我的代码:

public void setupDashboardTabs(List<CreateFragmentsPojo> fragments) { 
    this.fragments = fragments; 

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    viewPager.setOffscreenPageLimit(3); 

    setupDashboardViewPager(fragments); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 

    setUpFontStyleForTabs(); 
} 


public void setupDashboardViewPager(List<CreateFragmentsPojo> fragments) { 
    try { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 

     for (int i = 0; i < fragments.size(); i++) { 
      adapter.addFragment(fragments.get(i).getFragment(), fragments.get(i).getTitle()); 
     } 
     viewPager.setAdapter(adapter); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

viewPager.setAdapter(适配器); 得到空指针execption在这条线

代码注销:

Intent intent = new Intent(this, LoginActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
    finish(); 

堆栈跟踪:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()' on a null object reference 
W/System.err:  at android.support.v4.app.FragmentManagerImpl.ensureExecReady(FragmentManager.java:1949) 
W/System.err:  at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1965) 
W/System.err:  at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:620) 
W/System.err:  at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166) 
W/System.err:  at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:513) 
W/System.err:  at io.skreem.dashboard.DashboardActivity.setupDashboardViewPager(DashboardActivity.java:459) 
W/System.err:  at io.skreem.dashboard.DashboardActivity.setupDashboardTabs(DashboardActivity.java:443) 
W/System.err:  at io.skreem.dashboard.DashboardActivity$4.onResponse(DashboardActivity.java:408) 
W/System.err:  at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 
W/System.err:  at android.os.Handler.handleCallback(Handler.java:746) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
W/System.err:  at android.os.Looper.loop(Looper.java:148) 
W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5443) 
W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
+0

可能重复[什么是NullPointerException,以及如何解决它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-doi-i-fix -it) –

+0

没有帮助 – MobDev

+0

修复此错误的任何成功?我有时也遇到同样的问题 –

回答

0

viewPager.setOffscreenPageLimit(3);

是问题所在。正如你有两个标签。这意味着2页,但你强制3作为PageLimit。此外需要添加片段到适配器?

+0

嘿,Adapter用来显示碎片。 setOffscreenPageLimit(3)为其他选项卡,这应该不是一个问题,因为它与其他工作 – MobDev

0

我有同样的问题,它是由片段的不同实例重用ViewPager实例造成的。第二次调用ViewPager.setAdapter()后发生异常。如果这是您遇到的问题,您可以尝试我使用的解决方案。要解决这个问题,我必须在我的片段的onDestroyView()方法中删除适配器。

项目演示问题和解决方案can be found here

相关问题