java - Android TabListener : onTabSelected - add fragment to back stack

标签 java android android-fragments android-tabs

我在 Android 应用程序中使用类似于此的 TabListener:http://developer.android.com/guide/topics/ui/actionbar.html#Tabs

我的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);
    }
}

每次选择一个选项卡时,我都想将其添加到后退堆栈中。我怎样才能做到这一点?将参数 ft 与 ft.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.

最佳答案

ActionBar guide您在问题中链接到的内容对返回堆栈有这样的说法(在选项卡监听器示例代码下方的“警告”部分中):

You also cannot add these fragment transactions to the back stack.

指南没有解释原因,但不支持您想要的。您必须以其他方式保留标签历史记录,或者根本不保留标签历史记录。

关于java - Android TabListener : onTabSelected - add fragment to back stack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043101/

相关文章:

android - XML 定义的动画中指定的持续时间是否真的以毫秒为单位?

java - SpringMVC Controller 错误

java - 如何解析java中的范围输入

java - excel中的数字单元格值读取异常,小数点后附加额外数字

android - 如何在 Flutter 插件中使用 Android Fragment?

android - 尝试在 fragment 中使用 Mediaplayer

java - 我需要显式释放 FullHttpRequest.content().copy() 吗?

android - 什么是 REQUEST_CHECK_SETTING?

android - 球碰撞 : Balls Stick Together

android - 如何设置 edittext 未处于焦点时的 float 标签文本颜色与 edittext 提示颜色不同?