Android,在抽屉显示时处理onBackPressed

时间:2014-07-14 09:42:28

标签: android drawer

默认情况下,当抽屉显示并按BackButton它自动关闭时。 但是我希望当它显示并且用户点击BackButton时,关闭应用。 我尝试了这些解决方案,但没有奏效:

Navigation drawer, handling the back button to go to previous fragments

Backbutton press from android navigation drawer

2 个答案:

答案 0 :(得分:0)

首先覆盖您的活动后退,然后可以检查抽屉是否打开

mDrawerLayout.isDrawerOpen(GravityCompat.START);

如果返回true,只需关闭您的应用。

重要:检查您的抽屉重力。

尝试将片段注册到后面按下:

public void registerBackButton()
{
    if (getView() != null)
    {
        getView().setFocusableInTouchMode(true);
        getView().requestFocus();
        final BaseFragment frag = this;
        getView().setOnKeyListener(new OnKeyListener()
        {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event)
            {
                if (event.getAction() != KeyEvent.ACTION_DOWN)
                {
                    if (keyCode == KeyEvent.KEYCODE_BACK)
                    {
                        if (isVisible())
                        {
                            return frag.onFragmentBackPressed();
                        }
                    }
                }

                return false;
            }
        });
    }
}

现在在onFragmentBackPressed中检查抽屉是否打开,如上所述。

答案 1 :(得分:0)

在抽屉打开时不会调用

onBackPressed,或者如果您的键盘打开,那么您的后退键也会变为向下箭头。因此,当您按下该键时,键盘会隐藏,而onBackPressed将不会被静止调用。

再次按后退按钮时,您的应用将会关闭。键盘也是如此。

首先关闭抽屉,然后再按一下按钮,然后你的应用程序将完成