片段已经添加了IllegalStateException,仅包含一个片段

nuk*_*rum 5 android

我知道有关此异常的问题很多,但是,在使用时,我只有一次分配就遇到了此异常FragmentStatePagerAdapter

在设置适配器和寻呼机时,我在下面指出了发生崩溃的行。

设置我的Fragments:

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();
Run Code Online (Sandbox Code Playgroud)

设置我的适配器和寻呼机:

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);
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

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)
Run Code Online (Sandbox Code Playgroud)

Isa*_*pos 13

有时,这是在加载片段时发生某些事情时引发的一般错误。

例如:当onCreateView我在内部findViewById使用片段布局中不存在的错误 id调用时,我遇到了这个错误。

因此,请确保您的 fragmentonCreateView代码没有任何错误(尝试将其全部注释掉 - 仅返回原始膨胀视图 - 并查看它是否仍然引发此错误。


jat*_*ana 9

您添加片段的方式不一定有问题。由于我遇到了类似的问题,后来当我使用调试器逐步找到真正的问题时,结果发现问题在于片段布局中的视图。

我遇到了和你类似的异常,但真正的异常是

java.lang.ClassCastException:
Run Code Online (Sandbox Code Playgroud)


nuk*_*rum 5

问题是我正在将Fragments 添加到经理中。FragmentPagerAdapter自动将所有Fragments 添加到getItem()方法中的管理器。

有关此方法的详细信息,请参阅此答案getItem()