Android fragments 操作栏选项卡';切换选项卡时,s片段为空:

Android fragments 操作栏选项卡';切换选项卡时,s片段为空:,android-fragments,android-actionbar,Android Fragments,Android Actionbar,我正在使用ActionBar.TabListener,如下所示: 我在tablistener中添加了几个选项卡,如下所示 表1->片段a->片段b->片段c 表2->片段d 我点击选项卡1,从a到b再到c。当我停留在选项卡1上,并且我在“a”中时,单击“上一步”转到“b”,单击“下一步”转到“a”。这是因为我在b和c中添加了addtoBackStack() 但当我在弗雷根特c的时候。点击标签2,回到标签1,点击后退,我得到一个空白的白色标签 这似乎是意料之中的,因为ft.attach()会根据

我正在使用ActionBar.TabListener,如下所示:

我在tablistener中添加了几个选项卡,如下所示

表1->片段a->片段b->片段c 表2->片段d

我点击选项卡1,从a到b再到c。当我停留在选项卡1上,并且我在“a”中时,单击“上一步”转到“b”,单击“下一步”转到“a”。这是因为我在b和c中添加了addtoBackStack()

但当我在弗雷根特c的时候。点击标签2,回到标签1,点击后退,我得到一个空白的白色标签

这似乎是意料之中的,因为ft.attach()会根据文档重新创建视图

到目前为止,我所尝试的: *使用fragmentTransaction在tablistener的onselected()方法中将“a”显式添加到backstack中

如何在转到选项卡2之前保留选项卡1中的视图层次结构,并在回到选项卡1时重新创建层次结构,以便在选项卡C中时可以转到选项卡B和A

编辑: (还向问题添加了标记片段) 我从选项卡2出来后,按下选项卡1上的后退按钮时,会得到以下堆栈跟踪

W/System.err(26823): java.lang.IllegalStateException: Fragment already added: SearchTab{427a29a8 #1 id=0x1020002 search}
W/System.err(26823):    at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1146)
W/System.err(26823):    at android.app.BackStackRecord.popFromBackStack(BackStackRecord.java:722)
W/System.err(26823):    at android.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1504)
W/System.err(26823):    at android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:493)
W/System.err(26823):    at android.app.Activity.onBackPressed(Activity.java:2220)
W/System.err(26823):    at android.app.Activity.onKeyUp(Activity.java:2194)
W/System.err(26823):    at android.view.KeyEvent.dispatch(KeyEvent.java:2782)
W/System.err(26823):    at android.app.Activity.dispatchKeyEvent(Activity.java:2428)
W/System.err(26823):    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2076)
W/System.err(26823):    at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:4192)
W/System.err(26823):    at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:4121)
W/System.err(26823):    at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3169)
W/System.err(26823):    at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err(26823):    at android.os.Looper.loop(Looper.java:137)
W/System.err(26823):    at android.app.ActivityThread.main(ActivityThread.java:5328)
W/System.err(26823):    at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(26823):    at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err(26823):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
W/System.err(26823):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
W/System.err(26823):    at dalvik.system.NativeStart.main(Native Method)

这是不久前提出的问题,但您可以尝试实现自己的TabListener,并在onTabSelected()中执行FragmentTransaction.show(),在onTabSelected()中执行FragmentTransaction.hide()