Android,在显示抽屉时处理onBackPressed



默认情况下,当抽屉显示并按下BackButton时,它会自动关闭。但我想当它显示和用户点击BackButton,关闭应用程序。我尝试了这些解决方案,但没有工作:

导航抽屉,处理返回按钮以转到上一个片段

android导航抽屉

onBackPressed不会在抽屉打开时被调用,或者让我们说,如果你的键盘是打开的,那么你的后退键也会变为向下箭头。所以当你按下这个键时,你的键盘隐藏了,你的onBackPressed将不会被调用。

当您再次按后退键时,您的应用程序将被关闭。键盘也是如此。

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

首先重写您的活动的回压,然后可以检查抽屉是否打开

mDrawerLayout.isDrawerOpen(GravityCompat.START);

如果this返回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检查抽屉是否打开或不如上所述

最新更新