使用Fragment和Navigation Component的导航架构是一种常见的不使用单个Activity的解决方法。以下是一个使用Fragment和Navigation Component的示例代码:
dependencies {
def nav_version = "2.3.5"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
}
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
// 将导航控制器与ActionBar关联,以便处理ActionBar的后退按钮
setupActionBarWithNavController(navController)
}
override fun onSupportNavigateUp(): Boolean {
return navController.navigateUp() || super.onSupportNavigateUp()
}
}
这样,你就可以在Fragment之间进行导航了。例如,在Fragment1中,你可以使用以下代码导航到Fragment2:
// 在Fragment1中的某个地方
val action = Fragment1Directions.actionFragment1ToFragment2()
findNavController().navigate(action)
这是使用Fragment和Navigation Component的不使用单个Activity的导航架构的一个示例。你可以根据自己的需求进行修改和扩展。