这段代码究竟是什么意思(涉及popBackStackImmediate并回压)

时间:2016-04-11 00:05:22

标签: android android-fragments android-activity back-stack

这段代码:

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

这究竟是什么意思?我查看了文档,并说它

  

"与popBackStack(int,int)类似,但会立即执行操作   在电话里面。这就像调用executePendingTransactions()   事后"

但我不知道这意味着什么,或者在它面前做出否定或者super.onBackPressed()正在做什么意味着什么。

1 个答案:

答案 0 :(得分:0)

  

如果弹出了某些内容,则返回true,否则返回false。

基本上你正在弹出你的背包(清理历史上的碎片,所以当你回去时你不会去最后一个碎片)如果背板上没有碎片(历史上没有碎片)你会做你的super.backPressed。  super.onBackpressed()将执行你的活动onBackPressed(即使从片段调用此代码,因为你的片段onBackPressed()上没有默认代码。 如果你的活动扩展了默认的Android活动,那么它将返回到最后一个活动,如果有一个活动,则os退出应用程序,如果没有活动。

伪代码:

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

执行此操作的开发人员可能试图让用户在按下时无法返回到最后一个片段。像Activity1 - >活性2(片段A - >片段B - >片段C)。现在,用户在frag C上,他将返回活动1(当他按回或点击后退图标时),而不是碎片B.