[英]How to use onBackPressed() in Fragment and Activity?
I'm creating LoginActivity-> OtherActivity-> Fragment 1-> Fragment_2. 我正在创建LoginActivity-> OtherActivity->片段1-> Fragment_2。 When I click Back Button I'm back in Fragment_1 when again I click BackButton I'm in LoginActivity why?
当我单击“后退按钮”时,我又回到Fragment_1中,当我再次单击“后退按钮”时,我在LoginActivity中,为什么?
I want come back to MainActivity after the click BackButton in Fragment _1 and after next click BackButton (in MainActivity) I want come back to home screen 我想在片段_1中单击BackButton之后返回MainActivity,然后在MainActivity中再次单击BackButton之后返回主屏幕。
How can I do this ? 我怎样才能做到这一点 ?
In MainActivity i have: 在MainActivity中,我有:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0 ) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
Call addToBackStack
when adding fragment. 添加片段时调用
addToBackStack
。 For example: 例如:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.container, fragment);
ft.addToBackStack(backStateName);
ft.commit();
Also, call finish()
on your LoginActivity before starting OtherActivity. 另外,在启动OtherActivity之前,请在LoginActivity上调用
finish()
。
At first remove LoginActivity from stack when navigating to OtherActivity. 首先,导航到OtherActivity时从堆栈中删除LoginActivity。 After that use @ahomphophone's answer when presenting fragment.
之后,在呈现片段时使用@ahomphophone的答案。 After that back stack should work as expected without needing override 'onBackPressed'.
之后,后向堆栈应按预期工作,而无需覆盖'onBackPressed'。
Note: There is no MainActivity on your provided stack. 注意:提供的堆栈上没有MainActivity。
Update: If you want to stay in OtherActivity use this code 更新:如果您想停留在OtherActivity中,请使用此代码
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0 ) {
getFragmentManager().popBackStack();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.