我在此活动中有一个MainActivity
和两个片段,例如SignupFragment
和MenuFragment
。首先我在SignupFragment
中添加MainActivity
:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, new SignupFragment());
ft.commit();
重要提示:我不需要将此片段存储在backstack中
现在从SignupFragment
我替换MenuFragment
FragmentManager fm = getActivity().getSupportFragmentManager();
fm.beginTransaction()
.replace(R.id.content_frame, new MenuFragment(), FRAGMENT_TAG)
.addToBackStack(null)
.commit();
重要提示:我需要将此片段添加到backstack。例如,我有另一个像AnotherFragment
这样的framgent,我将其替换为MenuFragment
并将其添加到backstack中当用户在AnotherFragment
按下后退按钮时,我想将他返回MenuFragment
我在OnBackPressed
覆盖MainActivity
,并为OnBackStackChangeListener
添加了一个监听器:
FragmentManager fm = getSupportFragmentManager();
fm.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0)
finish();
}
});
问题当我在MenuFragment
并按回按钮后,我又回到SignupFragment
并OnCreateView
呼叫了一会儿然后{{ 1}}被叫。(当我按下后退按钮时,finish()
的视图显示片刻,然后被销毁)
问题
1-如何阻止返回SignupFragmen
2-当按下后退按钮时,为什么在SignupFragment ?
中调用了OncreateView
?
提前致谢。
答案 0 :(得分:0)
我发现了我的问题。
当我按下后退按钮时,OnBackPressed
被调用,MenuFragment
被显示,然后调出onCreateView
SignupFragment
,然后onBackStackChanged
被调用,所以我在{{}}中查看{1}}:
OnBackPressed