使用Android中片段的后退按钮



我的目标是以下行为。

当我从事主要活动时,如果我导航到片段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

相关内容

  • 没有找到相关文章

最新更新