【问题标题】:Navigation view's menu items are unable to navigate to navigate to their respective destinations导航视图的菜单项无法导航以导航到各自的目的地
【发布时间】:2020-11-03 08:52:43
【问题描述】:

我正在尝试使用导航组件实现导航抽屉。我的导航视图包含可用于通过其 ID 导航到各自目的地的菜单项。 该应用程序的其余部分运行良好,但问题在于导航视图。 menuItem id 都对应于导航目的地,我确信它可以访问 navController 以导航到其各自的目的地。如果有任何建议或解决方案,我将不胜感激。

    class MainActivity : AppCompatActivity() {

private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var navController: NavController
private lateinit var drawerLayout: DrawerLayout
private lateinit var navigationView: NavigationView
private lateinit var navHost: NavHostFragment


private lateinit var listener: NavController.OnDestinationChangedListener
override fun onCreate(savedInstanceState: Bundle?) {
    Toast.makeText(this, "app booted up", Toast.LENGTH_SHORT).show()
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    
    navigationView = findViewById(R.id.nav_drawer)
    drawerLayout = findViewById(R.id.drawer_layout)
    navHost = supportFragmentManager.findFragmentById(R.id.nav_host) as NavHostFragment
   
    navController = findNavController(R.id.nav_host)
   
    appBarConfiguration = AppBarConfiguration(navController.graph,drawerLayout)
  
  setupActionBarWithNavController(navController,appBarConfiguration)
            navigationView.setupWithNavController(navController)
}
override fun onSupportNavigateUp(): Boolean {
    val navController = findNavController(R.id.nav_host)
    return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()//we have to specify the drawerLayout.
}

}

         /**menu for navigation view
          <?xml version="1.0" encoding="utf-8"?>
          <menu xmlns:app="http://schemas.android.com/apk/res-auto"
          xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"> 
          <group>
           android:checkableBehavior="single">
           <item android:title = "@string/coffee_man_option_1"
           android:id  = "@id/home"/>
           <item android:title = "@string/coffee_man_option_2"
            android:id  = "@id/testFragment"/>
            </group>
            </menu>

      /** navigation graph **/
       <?xml version="1.0" encoding="utf-8"?>
       <navigation xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         xmlns:app="http://schemas.android.com/apk/res-auto" 
         android:id="@+id/nav_graph"
app:startDestination="@id/home">
<fragment
    android:id="@+id/home"
    android:name="com.example.coffeeman.Home"
    android:label="Home"
    tools:layout="@layout/home_screen">
    <action
        android:id="@+id/action_home_to_testFragment"
        app:destination="@id/testFragment" />
    </fragment>
    <fragment
     android:id="@+id/testFragment"
     tools:layout="@layout/test_view"
    android:name="com.example.coffeeman.testFragment"
    android:label="testFragment" >
    <action
        android:id="@+id/action_testFragment_to_home"
        app:destination="@id/home" />
</fragment>

【问题讨论】:

    标签: android kotlin navigation-drawer


    【解决方案1】:

    在导航视图上调用 bringToFront() 允许项目响应。

        navigationView.bringtoFront() 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多