在Fragment中拦截BACK返回键,具体实现

在Activity中拦截按键还是比较容易的,但是目前我遇到了一个需求,我需要在fragment中去拦截一下返回键,这个就比较纠结了,搜了一些资料之后问题解决,处理方法如下
 @Override
    protected View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
       //.............
        View view = View.inflate(UIUtils.getContext(), R.layout.homefragment, null);
        ButterKnife.bind(this, view);
        //监听back必须设置的
        view.setFocusable(true);
        view.setFocusableInTouchMode(true);
        //然后在写这个监听器
        view.setOnKeyListener(backlistener);
        return view;
    }

private View.OnKeyListener backlistener = new View.OnKeyListener() {
        @Override
        public boolean onKey(View view, int i, KeyEvent keyEvent) {
            if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
                 //这边判断,如果是back的按键被点击了   就自己拦截实现掉  
                if (i == KeyEvent.KEYCODE_BACK) {
                    Toast.makeText(UIUtils.getContext(), "BACK拦截", Toast.LENGTH_SHORT).show();
                    return true;//表示处理了
                }
            }
            return false;
        }
    };
目前我觉得这个实现还是比较好的,如果还有大牛能有更好的方法希望指出,这个同样也可以拦截其他的几个按键.
展开阅读全文

没有更多推荐了,返回首页