2015-10-17 78 views
2

我知道關於此例外有幾個問題,但是,在使用FragmentStatePagerAdapter時,我遇到了只有一個分配的例外情況。片段已添加IllegalStateException並且只有一個片段副本

我指出我在設置適配器和尋呼機時遇到下面的崩潰。

設置我Fragment S:

android.support.v4.app.FragmentTransaction t = getSupportFragmentManager().beginTransaction(); 
t.add(0, new StarTabFragment(), "starTab"); 
t.add(0, new HierarchiesTabFragment(), "hierarchyTab"); 
t.add(0, new GroupsTabFragment(), "groupTab"); 
t.add(0, new VehiclesTabFragment(), "hierarchyTab"); 
t.commit(); 

設置我的適配器和傳呼機:

viewPager = (ViewPager) mDrawerLayoutRight.findViewById(R.id.pager); 
PagerTabStrip tabs = (PagerTabStrip) mDrawerLayoutRight.findViewById(R.id.pager_tab_strip); 
tabs.setTabIndicatorColor(Color.RED); 

CustomPagerAdapter customPagerAdapter = new CustomPagerAdapter(getSupportFragmentManager()); 
viewPager.setOffscreenPageLimit(customPagerAdapter.getCount() - 2); 
viewPager.setAdapter(customPagerAdapter); //crashing here 
viewPager.setOnPageChangeListener(new LoopingPageChangeListener(viewPager)); 
viewPager.setCurrentItem(1); 

堆棧跟蹤:

at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:876) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5343) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 
Caused by: java.lang.IllegalStateException: Fragment already added: StarTabFragment{d12eb55 #1 id=0x7f0b0116 starTab} 
    at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1197) 
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:673) 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489) 
    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486) 
    at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163) 
    at android.support.v4.view.ViewPager.populate(ViewPager.java:1073) 
    at android.support.v4.view.ViewPager.populate(ViewPager.java:919) 
    at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:447) 
    at com.company.activities.MapsActivity.setupSliderRight(MapsActivity.java:847) 
    at com.company.activities.MapsActivity.access$2100(MapsActivity.java:112) 
    at com.company.activities.MapsActivity$DBHierarchyResponseReceiver.onReceive(MapsActivity.java:2287) 
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:866) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5343) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 

回答

2

問題是我正在向管理員預先添加FragmentFragmentPagerAdapter自動將所有Fragment s添加到getItem()方法中的經理。

有關getItem()方法的詳細信息,請參閱this answer