当我们只有一个片段时处理 BackPressed

Handle `BackPressed` when we only have a fragment

我有一个 Activity 而它只有一个 Fragment。我想处理 backpressed 功能。当用户按下返回时,程序应该返回到 Activity。我知道这很简单,但我尝试了 Whosebug 上提到的一些解决方案,但其中 none 有效。例如我试过这个:

public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();

    if (count == 0) {
        super.onBackPressed();
        //additional code
    } else {

        getFragmentManager().popBackStack();
    }
}

您的代码似乎是正确的。您是否使用 addToBackStack 添加 Fragment 到 backstack?看看这个 question。和你的很像。

据我了解,您要做的就是当用户在 MainActivity

上按返回键时
  • 如果返回堆栈中有超过 1 个片段,则弹出片段
  • 如果后退堆栈中只有 1 个片段,第一次后退键将被忽略,您需要 运行 一些额外的代码。然后,如果用户再次按返回键,您的 MainActivity 将完成。

将您的代码更改为

private boolean ignoredFirstBackPressed = false;

@Override
public void onBackPressed() {
    int count = getFragmentManager().getBackStackEntryCount();
    if (count == 1) {
        // If there is only one fragment in back stack
        if (!ignoredFirstBackPressed) {
            // additional code
            ignoredFirstBackPressed = true;
        } else {
            finish();
        }
    } else {
        getFragmentManager().popBackStack(); // or super.onBackPressed()
    }
}