onBackPress在Fragment中调用了什么

时间:2012-12-07 07:17:31

标签: android fragment onresume onpause

在片段中我有这个:

onPause(){

super.onPause();
if(flag){
getActivity.finish();
}else{
}
}

onResume(){

flag = true;
super.onResume();
}

并且有一个Button,点击我将此标志设置为false:

Button.onClick{
flag = false;
}

这个想法是:

单击按钮时,请勿完成此活动。但是当设备 BackButton 被按下完成()时。

但这种逻辑不起作用。原因是,当我按下设备的 BackButton 时, onPause 未被调用。

这是Activty中的第4个片段。因此,当我按BackButton时,我可以看到第3片段。我不想这样做。

我在API 10设备上使用它,但我的应用程序使用支持库v4。

谢谢。

2 个答案:

答案 0 :(得分:5)

如果要关闭背面的活动,请按以下方式覆盖活动中的onBackPressed

public void onBackPressed() {
   Fragment fragment = getSupportFragmentManager().findFragmentByTag("yourfragment");
   if (fragment instanceOf YourFragmet) {
          finish();
          return;
   }
   super.onBackPressed();
}

如果要关闭按钮上的活动,则可以调用

Button.onClick{
  getActivity().onBackPressed();
}

OR

Button.onClick{
  getActivity().finish();
}

如果您在片段之间进行转换,则调用addToBackStack()作为FragmentTransaction的一部分,然后返回按钮将转到后面堆栈顶部的片段

答案 1 :(得分:-1)

为什么你不能使用片段的onDetach()?按下后退键,将在片段上调用onDetach()以删除它。

@Override
public void onDetach() {
   super.onDetach();
   if(flag){
     getActivity.finish();
   }else{
        }
}