2013-02-23 58 views
2

我在我的Android应用程序中使用TabListener类似于此:http://developer.android.com/guide/topics/ui/actionbar.html#Tabs的Android TabListener:onTabSelected - 添加片段回栈

onTabSelected实现:

public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    Fragment preInitFrag = mActivity.getFragmentManager().findFragmentByTag(mTag); 
    if (preInitFrag == null) { 
     mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs); 
     ft.add(android.R.id.content, mFragment, mTag); 
    } else { 
     ft.attach(preInitFrag); 
    } 
} 

选择一个选项卡每一次,我想要将其添加到后退堆栈。我怎样才能做到这一点?使用参数ftft.addToBackStack("test"),它不起作用。它抛出一个致命异常:

java.lang.RuntimeException: 
    Unable to start activity ComponentInfo{.../...BaseActivity}: 
java.lang.IllegalStateException: 
    This FragmentTransaction is not allowed to be added to the back stack. 
+0

这是'addToBackStack(字符串名称)'你应该传递给它的片段类的名称。 – abc667 2013-02-23 18:47:08

+0

我不明白你的意见,对不起。如何在''onTabSelected''callback中执行'addToBackStack'? – Tim 2013-02-23 20:38:03

回答

3

,你在你的问题有这样一段话大约后退堆栈(在该选项卡监听器示例代码下面的“警告”一节)连接到ActionBar guide

您也不能将这些碎片事务添加到后退堆栈。

该指南并没有解释为什么,但你想要什么不被支持。您必须以其他方式保留标记历史记录,或根本不保留标签历史记录。

+0

哦,我读了这个页面10多次,但是我没有看到。好吧,我必须以其他方式解决它。谢谢。 – Tim 2013-02-23 22:06:57