从左侧滑动时导航抽屉未打开

roc*_*god 5 android android-fragments navigation-drawer

正如 Android Developers 上的页面所说

用户可以通过从屏幕左边缘滑动或触摸操作栏上的应用程序图标来将导航抽屉带到屏幕上。

但奇怪的是,我 Activity 上的导航抽屉没有响应滑动动作。它仅在触摸操作栏上的图标时切换。下面是我对导航抽屉的实现

 mNavigationDrawerFragment = (NavigationDrawerFragment)
            getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);

    // Set up the drawer.
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mNavigationDrawerFragment.setUp(
            R.id.navigation_drawer,
            drawerLayout);
Run Code Online (Sandbox Code Playgroud)

对此有什么可能的解释吗?我怀疑的是我的活动默认情况下具有其片段之一的布局。所以是这个原因吗?

编辑:我的活动的布局文件

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

<!-- The main ocntent view -->
<FrameLayout android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>


<!-- The navigation drawer-->
<fragment android:id="@+id/navigation_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:divider="@android:color/transparent"
    android:name="com.example.android.handsfree.NavigationDrawerFragment"
    tools:layout="@layout/fragment_navigation_drawer" />
Run Code Online (Sandbox Code Playgroud)

Xya*_*ren 1

您的 \xc2\xb4NavigationDrawerFragment\xc2\xb4 已经在其`setUp\xc2\xb4 方法中为您创建了一个抽屉切换。

\n\n

您不应\xc2\xb4MainPage\xc2\xb4 Activity 中创建新的活动。

\n\n
\n\n

注意:\n可以android.support.v7.app.ActionBarDrawerToggle在.NavigationDrawerFragment

\n\n
\n\n

更新:

\n\n

现在问题似乎已经解决了。有 2 个问题:

\n\n
    \n
  1. OP 在其MainPageActivity 中创建了第二个抽屉切换,但在 的 setUp 方法中已经创建了一个NavigationDrawerFragment,该方法由 MainPage 调用以设置抽屉。(这基本上是将抽屉中的一些东西外包[编码]到抽屉片段中。)
  2. \n
  3. OPonCreateOptionsMenu通过调用将 DrawerLockMode 设置为 的方法将抽屉锁定在内部LOCK_MODE_LOCKED_CLOSED。他从未恢复这一变化。
  4. \n
\n