按下后退按钮后片段仍然可见

时间:2014-04-02 08:33:45

标签: android android-fragments

我希望有一个Fragment,可以创建一些东西。 之后,我想在另一个片段中展示新的“someting”。按下设备上的后退按钮后,我想返回MainFragment而不是CreateFragment(这很有效)。但在那之后,ShowFragment仍然可见。

这是我的代码:

MainActivity我的MainFragment有一个“创建”按钮。

点击按钮后,我加载了“创建”片段。

fragmentManager.beginTransaction()
           .replace(R.id.container, CreateFragment.newInstance())
           .addToBackStack("Create")
           .commit();

如果用户输入了一些细节,他会点击“确定”按钮。这会在MainActivity上触发以下内容。

fragmentManager.beginTransaction()
            .replace(R.id.container, ShowFragment.newInstance(id))
            .commit();

到目前为止一切顺利,但问题就出现了。

如果用户点击设备上的后退按钮,他会返回MainFragment但是ShowFragment仍然可见(MainFragment下)。

更新

这就是:

MainFragment> CreateFragment> ShowFragment> (后退按钮)> MainFragment(后面的ShowFragment)

2 个答案:

答案 0 :(得分:0)

只需在ShowFragment事件的堆栈中弹出onBackPress,如下所示:

@Override
public void onBackPressed() {
    final Fragment fragment = fragmentManager.findFragmentById(R.id.container);
    if (fragment != null) {
        fragmentManager.popBackStack();
    } else {
        super.onBackPressed();
    }
}

答案 1 :(得分:-2)

ShowFragment片段中片段ShowFragment的后退按钮将调用onBackPressed()方法。然后,当您调用方法popBackStack()时,它会返回CreateFragment

示例代码 -

public void onBackPressed()
{
  FragmentManager fm = getActivity().getSupportFragmentManager();
  fm.popBackStack();
}

有关类似情况的更多信息,请参阅帖子how-to-back-to-previous-fragment-on-pressing-manually-back-button-of-indivisual-fragment