在片段中我有这个:
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。
谢谢。
答案 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{
}
}