您的位置:首页 > 移动开发 > Android开发

Android fragment监听返回键

2017-04-10 12:38 513 查看
fragment需要监听返回键时分两种情况,一种是有其他控件获取了焦点,另一种是没有其他控件获得焦点。

先看第二种情况,代码如下:

MyFragment.Java

[java] view
plain copy

 print?

public class MyFragment extends Fragment {  

    @Override    

    public View onCreateView(LayoutInflater inflater, ViewGroup container,    

            Bundle savedInstanceState) {    

        View rootView = inflater.inflate(R.layout.history, container,    

                false);    

          

        // 设置下面三个状态才能监听返回事件  

        lv.setFocusable(true);  

lv.requestFocus();

        lv.setFocusableInTouchMode(true);  

        lv.setOnKeyListener(backListener);  

          

        return rootView;    

    }    

  

    private View.OnKeyListener backListener = new View.OnKeyListener() {  

        @Override  

        public boolean onKey(View v, int keyCode, KeyEvent event) {  

            if (keyCode == KeyEvent.KEYCODE_BACK  

                    && event.getAction() == KeyEvent.ACTION_DOWN) {  

                // ToDo  

                return true;  

            }             

            return false;  

        }  

    };  

}  

第一种情况则需要在Activity中监听onKeyDown事件,贴出关键代码

在Activity中

[java] view
plain copy

 print?

private Fragment fg;    // fg记录当前的Fragment  

  

@Override  

public boolean onKeyDown(int keyCode, KeyEvent event) {   

    if (fg instanceof MyFragment) {  

        ((MyFragment) fg).onKeyDown(keyCode, event);  

    }  

}  

在MyFragment中

[java] view
plain copy

 print?

// 返回键按下时会被调用  

public boolean onKeyDown(int keyCode, KeyEvent event) {  

    if (keyCode == event.KEYCODE_BACK  

            && event.getAction() == KeyEvent.ACTION_DOWN) {  

        // TODO  

        return true;  

    }             

    return false;  

}  

这样就能通过Activity监听按键,然后调用Fragment定义的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android fragment