【发布时间】: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