1

在一个片段中,我有这个:

onPause(){

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

onResume(){

flag = true;
super.onResume();
}

并且有一个按钮,单击时我将此标志设置为false:

Button.onClick{
flag = false;
}

这个想法是:

单击按钮时不要完成此活动。但是当按下设备BackButton时完成()。

但是这个逻辑是行不通的。原因是,当我按下设备的BackButton时,没有调用onPause 。

这是活动中的第四个片段。所以当我按下 BackButton 时,我可以看到第三个片段。我不想。

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

谢谢你。

4

2 回答 2

5

如果要关闭后按活动,则覆盖活动onBackPressed内部,如下所示:

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

如果你想在按钮点击时关闭活动,那么你可以调用

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

或者

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

如果在 Fragment 之间转换时,调用 addToBackStack() 作为 FragmentTransaction 的一部分,则返回按钮会将您带到返回堆栈顶部的片段

于 2012-12-07T07:23:52.853 回答
-1

为什么不能使用 Fragment 的 onDetach()?在按下 Back 键时,将在片段上调用 ​​onDetach() 以将其删除。

@Override
public void onDetach() {
   super.onDetach();
   if(flag){
     getActivity.finish();
   }else{
        }
}
于 2013-02-03T01:10:10.747 回答