【问题标题】:Do not remove fragment from backstack不要从 backstack 中删除片段
【发布时间】:2017-11-07 11:22:46
【问题描述】:

我想将fragments 保存在管理器中,即使我点击返回。 这是代码:

 FragmentTransaction fragmentTransaction = getSupportFragmentManager()
                .beginTransaction();
        fragmentTransaction.setCustomAnimations(R.anim.slide_in_right_frag, R.anim.slide_out_left_frag, R.anim.slide_in_left, R.anim.slide_out_right);

        FragmentManager manager = getSupportFragmentManager();
        manager.findFragmentByTag(title);

        if (manager.findFragmentByTag(title) == null) {
            fragmentTransaction.replace(R.id.fragment_container, fragment, title);
            if (addToBackStack) {
                fragmentTransaction.addToBackStack(null);
            }
            fragmentTransaction.commit();
        } else {
            fragmentTransaction.show(manager.findFragmentByTag(title)).commit();
        }

现在如果我点击onBack 我的fragment 将从后台堆栈和管理器中删除。我想即使我点击后退保存这个片段,所以如果我点击下一步我想回到这个片段。 这是我的方式:

frag1 -> clickOnNext -> frag2 -> put some data in edittexts ->
clickOnBack -> frag1 -> clickOnNext -> frag2(frag has data from first time).

现在总是获得fragment2 的新实例。

【问题讨论】:

标签: android android-fragments fragment-backstack


【解决方案1】:

使用fragmentTransaction.add(R.id.fragment_container, fragment, title); 而不是fragmentTransaction.replace(R.id.fragment_container, fragment, title);

并在您的活动onBackPressed 事件中处理片段的显示/隐藏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多