【问题标题】:Android Navigation Drawer Template Fails to Work Unless it is navigated by tab and cursor keys on Emulator AS4.0Android Navigation Drawer 模板无法工作,除非它在 ​​Emulator AS4.0 上通过 tab 和光标键导航
【发布时间】:2020-06-10 00:00:17
【问题描述】:

Android Studio 4。 新的项目导航抽屉活动。 添加名称等,然后构建。 发送到 Nexus 6P API 28 仿真、Pixel 3a API29 仿真。 也适用于三星 SM-J530Y Android 9 和诺基亚 7Plus Android 10。

所有实例都允许打开抽屉,所有实例都不允许选择抽屉,但尝试选择条目会关闭抽屉。

我在 navController 中添加了一个 onDestinationChangedListener,这只会触发初始的主页选择事件。

尝试添加 navView.setNavigationItemSelectedListener,但从未触发

搜索只会拖出旧问题,但不会使用较新的 NavController。 尝试更新到最新的 beta01 kotlin 依赖项

def navVersion = "2.3.0-beta01"
implementation "androidx.navigation:navigation-fragment-ktx:$navVersion"
implementation "androidx.navigation:navigation-ui-ktx:$navVersion"

来自模板“2.2.2”

还添加了应用插件:'androidx.navigation.safeargs.kotlin' 无济于事。

我会拔掉一些头发,但我已经没有多少了。

我想在我的寻呼机应用程序中添加抽屉导航,使其远离选项卡,因此有兴趣让它发挥作用。

【问题讨论】:

  • 听起来您的布局可能有问题。充当抽屉的<View> 必须在<DrawerLayout> 中最后列出。假设在该特定模板中它仍然是<NavigationView>,那么只需确保它是<DrawerLayout> 中的最后一个子元素。如果这是问题所在,并且您自己没有更改该布局,请告诉我。它可能已由您的 IDE 自动完成,我们可能必须更改设置以使其停止这样做。
  • 除了在 MainActivity onCreate 中添加处理程序以确定是否正在生成事件之外,我没有进行任何更改。我检查了 activity_main.xml 并且 NavigationView 在包含内容布局之前。我交换了这些,然后她走了。现在可以了。谢谢迈克 M。
  • 没问题。如果这次可能只是侥幸,但该模板应该以正确的顺序开始布局。如果您注意到此问题再次出现——或者如果您对任何其他布局自动重新排序有疑问——您可能需要调整设置以让 Android Studio 停止这样做。在this post 中有解释。仅供参考。真高兴你做到了。干杯!

标签: android navigation navigation-drawer androidx navigationcontroller


【解决方案1】:

正如 Mike M 在 cmets 中强调的那样,activity_main.xml 中的 NavigationView 的顺序不正确。

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">

<com.google.android.material.navigation.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/activity_main_drawer" />

<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
</androidx.drawerlayout.widget.DrawerLayout>

错了。

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">



    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>

有效。 如此简单却又如此令人沮丧。

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2021-08-11
    • 2018-11-07
    • 2020-06-27
    相关资源
    最近更新 更多