Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android NavigationDrawerOpened始终返回true_Android_Navigation Drawer_Drawerlayout_Android Compatibility - Fatal编程技术网

Android NavigationDrawerOpened始终返回true

Android NavigationDrawerOpened始终返回true,android,navigation-drawer,drawerlayout,android-compatibility,Android,Navigation Drawer,Drawerlayout,Android Compatibility,我面临着一个奇怪的问题。我正在应用程序中使用支持库中的导航抽屉。 这里是布局图 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/navigation_drawer" android:layout_width="match_parent" android:layout_hei

我面临着一个奇怪的问题。我正在应用程序中使用支持库中的导航抽屉。
这里是布局图

   <android.support.v4.widget.DrawerLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/navigation_drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linear_layout_main_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar_main"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize"
            android:visibility="gone" />
    </LinearLayout>

    <ScrollView
        android:id="@+id/layout_drawer_left"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fillViewport="true">

    </ScrollView>

    <ScrollView
        android:id="@+id/layout_drawer_right"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:fillViewport="true" />
</android.support.v4.widget.DrawerLayout>
为了关闭抽屉,我尝试了很多方法,它在视觉上关闭它,我的意思是一切正常,抽屉慢慢离开屏幕并保持关闭,但从代码的角度来看,它总是返回真的

 protected boolean isDrawersOpened() {
    boolean rightDrawerOpened = mDrawerMainLayout.isDrawerOpen(mRightDrawerContainer);
    boolean leftDrawerOpened = mDrawerMainLayout.isDrawerOpen(mLeftDrawerContainer);
    return  rightDrawerOpened || leftDrawerOpened ;
}
永远正确

public void closeDrawer() {
    mDrawerMainLayout.closeDrawer(GravityCompat.END);
    mDrawerMainLayout.closeDrawer(GravityCompat.START);
    mDrawerMainLayout.closeDrawer(mRightDrawerContainer);
    mDrawerMainLayout.closeDrawer(mLeftDrawerContainer);
    mDrawerMainLayout.closeDrawers();
}
因此,它应该是有效的,但返回的总是正确的

若它是suppor库中的bug,并没有问题,我将等待,并在活动中使用布尔变量来指示这一点,但可能有人处理了相同的问题


提前感谢您的帮助和建议

对不起,我的疏忽。
我的密码出错了

   if (hasLeftDrawer) {
        setupLeftDrawer();
    } else {
        mDrawerMainLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, mLeftDrawerContainer);
    }
    if (hasRightDrawer) {
        setupRightDrawer();
    } else {
        mDrawerMainLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, mRightDrawerContainer);
    }
应该是

    if (hasLeftDrawer) {
        setupLeftDrawer();
    } else {
        mDrawerMainLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mLeftDrawerContainer);
    }
    if (hasRightDrawer) {
        setupRightDrawer();
    } else {
        mDrawerMainLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mRightDrawerContainer);
    }

你试过用重力而不是视图来检查吗?当然,我已经更新了我的问题。我错过了这个对不起
    if (hasLeftDrawer) {
        setupLeftDrawer();
    } else {
        mDrawerMainLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mLeftDrawerContainer);
    }
    if (hasRightDrawer) {
        setupRightDrawer();
    } else {
        mDrawerMainLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mRightDrawerContainer);
    }