ActionBarDrawerToggle 滑动时的 onClose 事件

ActionBarDrawerToggle event onClose when sliding

我正在实现一个带有两个操作栏抽屉的 activity。

现在我在操作栏中有两个按钮显示这些抽屉,它们工作正常。如果已经打开,他们甚至会关闭另一个。

这些抽屉旨在用作列表视图的过滤器(城市和类别),我的想法是监听 OnClose 事件,这样我就可以获取选中的项目并过滤列表。

使用 "onDrawerClosed" 我可以很容易地做到这一点,但问题是当抽屉通过滑动显示时,因为事件没有被触发。

然后我一直在处理"onDrawerSlide",最后得到这个代码:

void initDrawer() {
    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_home_up, R.string.app_name,
            R.string.app_name) {

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            if (slideOffset == 0) {
                //if (!drawerLayout.isDrawerOpen(drawerView)) {
                    outputManager.showToast("Closed ");
                    //drawerClosed(drawerView);
                //}

                invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
            }

            super.onDrawerSlide(drawerView, slideOffset);
        }

        public void onDrawerClosed(View drawerView) {
            // getActionBar().setTitle(mTitle);
            // calling onPrepareOptionsMenu() to show action bar icons
            invalidateOptionsMenu();
            drawerClosed(drawerView);
        }

        public void onDrawerOpened(View drawerView) {
            // getActionBar().setTitle(mDrawerTitle);
            // calling onPrepareOptionsMenu() to hide action bar icons
            invalidateOptionsMenu();
        }
    };
    drawerLayout.setDrawerListener(drawerToggle);
}

它一直触发事件很多(我认为它触发了几次直到滑动完成),所以我检查了 slideOffset 是否为 0。它都不起作用,一个滑块起作用,但另一个不触发任何事件。

有什么想法吗?也许我可以阻止滑动并允许仅通过按钮显示抽屉,但是如何?

最后我拆掉了第二个抽屉,想出了一个不同的方法。我想我试图以一种不适合的方式使用它。