这段代码到底是什么意思(涉及popBackStackImmediate和按回)

What does this code mean exactly (involving popBackStackImmediate and pressing back)

这段代码:

@Override
public void onBackPressed() {
    if( !getFragmentManager().popBackStackImmediate() ) super.onBackPressed();
}

这到底是什么意思?我查看了文档,上面写着

"Like popBackStack(int, int), but performs the operation immediately inside of the call. This is like calling executePendingTransactions() afterwards."

但是我不知道这是什么意思,或者前面有否定是什么意思,或者super.onBackPressed()在做什么。

Returns true if there was something popped, else false.

基本上你正在弹出你的后台堆栈(清理历史上的片段,所以当你返回时你不会去最后一个片段)并且如果后台没有片段(历史上没有片段)你会做你的 super.backPressed。 super.onBackpressed() 将执行您的 activity onBackPressed(即使此代码是从片段调用的,因为您的片段 onBackPressed() 上没有默认代码可执行。 如果您的 activity 扩展了默认 Android activity 它将返回到最后一个 activity,如果有的话,os 退出应用程序,如果有none.

伪代码:

popBackStack() // clear the fragment history
if (somethingWasPopped) {
 super.backPressed() // this will do what i said above
}

可能这样做的开发者试图让用户在按下后退时无法返回到最后一个片段。像 Activity1 -> Activity 2(片段 A -> 片段 B -> 片段 C)。现在,用户在 frag C 上,他将返回到 Activity 1(当他按下后退或单击后退图标时),而不是 frag B。