片段中的ONBackPressed功能不正常

时间:2014-09-18 10:35:15

标签: android fragment back-button

我有以下代码:

v = inflater.inflate(R.layout.fragment_color, container, false);
v.setFocusableInTouchMode(true);
v.requestFocus();
v.setOnKeyListener(new View.OnKeyListener() {

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

        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (mMenu.isOpened()) {
                mMenu.closeMenu();
            } else {
            }
        }
        return false;
    }
});

当我按下后退按钮时,我的菜单会按照它应该关闭,但应用程序也会关闭,但不应该关闭。

我在这里做错了什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

这是因为完成当前活动是返回键的默认行为。您需要通过onKeyListner中的返回true 来覆盖此行为。下面的代码应该适合你。

v = inflater.inflate(R.layout.fragment_color, container, false);
v.setFocusableInTouchMode(true);
v.requestFocus();
v.setOnKeyListener(new View.OnKeyListener() {

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

        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (mMenu.isOpened()) {
                mMenu.closeMenu();
               //It says that you have handled back key
                return true;
            } else {
            }
        }
        return false;
    }
});