您可以采用两种不同的方式来实现:
如果您在XML中使用了<androidx.fragment.app.FragmentContainerView>标签,方法如下:
class MainActivity : AppCompatActivity() {
private lateinit var navigationController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
navigationController = supportFragmentManager.findFragmentById(R.id.fragmentContainerView)
?.findNavController()!!
NavigationUI.setupActionBarWithNavController(this,navigationController)
}
override fun onSupportNavigateUp(): Boolean {
return NavigationUI.navigateUp(navigationController, null)
}
}
不推荐使用这种方式。如果您在XML中使用了标签,其做法如下:
class MainActivity : AppCompatActivity() {
private lateinit var navigationController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
navigationController = Navigation.findNavController(this,R.id.fragmentContainerView)
NavigationUI.setupActionBarWithNavController(this,navigationController)
}
override fun onSupportNavigateUp(): Boolean {
return NavigationUI.navigateUp(navigationController, null)
}
}
注意:这段内容需要添加到您的build.gradle文件中。
....
// Navigation
val nav_version = "2.7.6"
implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
implementation("androidx.navigation:navigation-ui-ktx:$nav_version")
....