我希望有一个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)
答案 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。