我的目标是以下行为。
当我从事主要活动时,如果我导航到片段1,从那里,导航到片段2,然后,当我按下手机的后退按钮时,因为我在片段2上,所以我回到了主屏幕,而不是片段1。
如果我在页面上有一个单独的按钮,那么这种行为将非常容易,就像我可以做的那样:
Button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
FragmentManager fm = getFragmentManager();
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
});
我遇到困难,因为我需要使用手机自己的后背按钮。我读过,onttonpressed()事件仅由活动而不是片段可用,而将这种逻辑移动到活动中很困难!
我如何实现自己之后的行为?
只需跟踪backstackcount,就可以根据计数做任何您想做的事情:
@Override
public void onBackPressed() {
manageBackStack();
}
private void manageBackStack() {
switch (getSupportFragmentManager().getBackStackEntryCount()) {
case 1:
//Do when count is 1
break;
case 2:
//Do when count is 2
break;
default:
finish();
}
}
希望它会有所帮助:)
当您添加片段时,您需要将事务添加到后堆栈中。这意味着您希望在按下返回按钮时将此交易逆转。
请使用以下代码:
getSupportFragmentManager().beginTransaction()
.add(detailFragment, "detail")
// Add this transaction to the back stack
.addToBackStack()
.commit();
您可以在:
中找到更多详细信息https://developer.android.com/training/implementing-navigation/temporal.html