您的位置:首页 > 其它

在Fragment中监听返回BACK按键

2017-07-30 11:56 381 查看
在谷歌官方推出NavigationView后,我们可以更方便的项目中使用一个Activity配合多个Fragment来实现多界面切换到效果,但是如果在Fragment中有跳转Fragment页面的问题时,点击返回键时需要返回时会有问题,因为Fragment默认是不接受返回按键的事件的,只有最外层的Activity会接受该事件,之前的做法一直是把所有的Fragment放到一个任务栈中,点击返回时依次调用栈中的Fragment显示,最近又有这样的需求的时候看到了以下这个方法直接在Fragment中拦截到了按键的返回的触发操作。
@Override
public void onResume() {
super.onResume();
//得到Fragment的根布局并使该布局可以获得焦点
getView().setFocusableInTouchMode(true);
//得到Fragment的根布局并且使其获得焦点
getView().requestFocus();
//对该根布局View注册KeyListener的监听
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {

if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
new AlertDialog.Builder(getActivity())
.setTitle("退出提示")
.setMessage("是否确定退出?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
getActivity().finish();
}
}).setNegativeButton("取消",null).show();
return true;
}
return false;
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: