返回箭头工具栏正在打开抽屉。

3
有一次,我的抽屉图标从汉堡包变成了返回按钮,调用了以下代码:
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);

因此,返回箭头显示出来了,但是点击它后,抽屉仍然打开。

我希望能够处理它,调用onBackpressed()代替。

这是我创建抽屉实例的时候。

   mActionBarDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            if (!isAdded()) return;
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public View.OnClickListener getToolbarNavigationClickListener() {


            return super.getToolbarNavigationClickListener();

        }

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);

            if (!isAdded()) return;
            if (!mUserLearnedDrawer) {
                mUserLearnedDrawer = true;
                saveSharedSetting(getActivity(), PREF_USER_LEARNED_DRAWER, "true");
            }

            getActivity().invalidateOptionsMenu();
        }
    };

我认为当我点击抽屉开关时,无论是汉堡包图标还是返回箭头图标,都必须调用getToolbarNavigationClickListener()方法,但事实并非如此。


请展示您的 onMenuItemClick 函数。很可能您正在重写此函数。 - Atif Farrukh
@maxi182 我看到了你的评论。抱歉,我误解了你的意图。所以我删除了我的回答。 - hata
没关系,Hata。谢谢你的帮助。 - maxi182
1个回答

1
当您需要在工具栏单击上覆盖箭头时,请将导航单击设置为工具栏。
getSupportActionBar().setNavigationOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            //handle back press or open drawer etc.
        }
});

每次都能正常工作。


1
谢谢,但是你如何确保返回箭头或汉堡菜单是否显示? - maxi182
你需要自己处理它。你可以随时动画箭头。 - Oğuzhan Döngül

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接