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

相關問題