要在Android中使用AndroidX Navigation多目的地来处理菜单项,你可以按照以下步骤进行操作:
dependencies {
def nav_version = "2.4.0"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
}
res/navigation/nav_graph.xml
)中定义你的目的地。假设你有两个目的地:fragment1
和fragment2
。你的导航图可能类似于以下内容:
NavController
实例,并将其与相关的NavHost
关联起来。例如,在你的Activity中:class MainActivity : AppCompatActivity() {
private lateinit var navController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
navController = navHostFragment.navController
// 将NavController与Toolbar关联起来,这样可以处理菜单项
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
setupActionBarWithNavController(navController)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.main_menu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.menu_item_fragment1 -> {
// 导航到目的地fragment1
navController.navigate(R.id.fragment1)
true
}
R.id.menu_item_fragment2 -> {
// 导航到目的地fragment2
navController.navigate(R.id.fragment2)
true
}
else -> super.onOptionsItemSelected(item)
}
}
}
在上面的示例中,我们假设你已经在布局文件中定义了一个带有id nav_host_fragment
的NavHostFragment
。
res/menu/main_menu.xml
),并在其中添加菜单项。
上面的示例中,我们创建了两个菜单项来导航到fragment1
和fragment2
。
这样,当你点击菜单项时,onOptionsItemSelected
方法会被调用,然后你可以使用NavController
导航到相应的目的地。
上一篇:androidx.navigation:navigation-ui与android.arch.navigation:navigation-ui-ktx之间有什么区别?
下一篇:androidx.paging.InitialDataSource无法转换为com.firebase.ui.firestore.paging.FirestoreDataSource。