切换标签时,动作条选项卡的空白片段: [英] ActionBar Tab's Fragments blank when switching tabs:
问题描述
我使用ActionBar.TabListener如下所列: 操作栏会自动切换标签:
我加入了一些卡口与tablistener如下:
标签1 - >片段 - >片段B - >片段C 标签2-> D片段
我点击选项卡1,从去到B到C。当我留在标签1,和我在'A',点击回转到B,点击后面的B进入到A。这是因为我在B和C加入addtoBackStack()
但是,当我在FragentC。并点击选项卡2,回到选项卡1,点击后,我拿到空白标签。
这似乎在预料之中,因为ft.attach()根据文档重新创建视图。
我已经试过到目前为止: *用于一个fragmentTransaction显式添加'一'在tablistener的onselected()方法来backstack。
我怎样才能preserve才去标签2并重新创建层次结构表一回来的时候,这样当我在标签C,我可以去标签B和A的标签1视图层次?
编辑: (还增加了标记片段的问题) 我得到了下面的堆栈跟踪时,pressing后退按钮选项卡1由表2
到来后, W / System.err的(26823):java.lang.IllegalStateException:碎片已添加:SearchTab {427a29a8#1 ID = 0x1020002搜索}
W / System.err的(26823):在android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1146)
W / System.err的(26823):在android.app.BackStackRecord.popFromBackStack(BackStackRecord.java:722)
W / System.err的(26823):在android.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1504)
W / System.err的(26823):在android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:493)
W / System.err的(26823):在android.app.Activity.onBack pressed(Activity.java:2220)
W / System.err的(26823):在android.app.Activity.onKeyUp(Activity.java:2194)
W / System.err的(26823):在android.view.KeyEvent.dispatch(KeyEvent.java:2782)
W / System.err的(26823):在android.app.Activity.dispatchKeyEvent(Activity.java:2428)
W / System.err的(26823):在com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchKeyEvent(PhoneWindow.java:2076)
W / System.err的(26823):在android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:4192)
W / System.err的(26823):在android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:4121)
W / System.err的(26823):在android.view.ViewRootImpl $ ViewRootHandler.handleMessage(ViewRootImpl.java:3169)
W / System.err的(26823):在android.os.Handler.dispatchMessage(Handler.java:99)
W / System.err的(26823):在android.os.Looper.loop(Looper.java:137)
W / System.err的(26823):在android.app.ActivityThread.main(ActivityThread.java:5328)
W / System.err的(26823):在java.lang.reflect.Method.invokeNative(本机方法)
W / System.err的(26823):在java.lang.reflect.Method.invoke(Method.java:511)
W / System.err的(26823):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)
W / System.err的(26823):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
W / System.err的(26823):在dalvik.system.NativeStart.main(本机方法)
这是问前一阵子,但你可以尝试实现自己的TabListener,做一个FragmentTransation.show()的onTabSelected()和FragmentTransaction.hide( )在onTabUnselected()。
I am using ActionBar.TabListener as listed here: Action Bar switching tabs automatically:
I am adding a few tabs with tablistener as follows
Tab 1 -> Fragment a -> fragment b -> Fragment c Tab 2-> Fragment d
I click on Tab 1, go from a to b to c. When I stay on Tab 1, and I am in ‘a’, clicking back goes to b, clicking back in b goes to ‘a’ . This is because I have added addtoBackStack() in b and c
But when I am in Fragent ‘c’. and click on Tab 2 and come back to Tab 1 and click back, I get blank white tab.
This seems to be expected because ft.attach() recreates the view according to the documentation.
What I have tried so far: * Used a fragmentTransaction to explicitly add 'a' to backstack in the tablistener's onselected() method.
How can I preserve the view hierarchy in Tab 1 before going to Tab 2 and recreate the hierarchy when back in Tab 1 so that when I am in Tab C, I can go to Tabs B and A?
EDIT: (also added tag fragments to question) I get the following stack trace when pressing back button on Tab 1 after coming from Tab 2
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)
This was asked a while ago, but you can try implementing your own TabListener and do a FragmentTransation.show() in onTabSelected() and a FragmentTransaction.hide() in onTabUnselected().
这篇关于切换标签时,动作条选项卡的空白片段:的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!