切换标签时,ActionBar标签的片段为空白:

时间:2013-10-26 06:09:48

标签: android-fragments android-actionbar

我正在使用此处列出的ActionBar.TabListener: Action Bar switching tabs automatically:

我正在使用tablistener添加一些标签,如下所示

标签1 - >片段a - >片段b - >片段c 标签2->片段d

我点击标签1,从a到b到c。当我停留在Tab 1上,并且我在'a'时,点击返回b,点击返回b进入'a'。这是因为我在b和c

中添加了addtoBackStack()

但是当我在Fragent'c'时。然后单击选项卡2并返回选项卡1并单击返回,我得到空白的白色选项卡。

这似乎是预期的,因为ft.attach()根据文档重新创建视图。

到目前为止我尝试了什么: *使用fragmentTransaction在tablistener的onselected()方法中向backstack显式添加'a'。

  

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

编辑: (还添加了标签片段来提问) 从Tab 2

进入后,按Tab 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)

1 个答案:

答案 0 :(得分:0)

前一段时间问过这个问题,但你可以尝试实现自己的TabListener并在onTabSelected()中执行FragmentTransation.show(),在onTabUnselected()中执行FragmentTransaction.hide()。