#android #kotlin #androidx #android-architecture-navigation
#Android #kotlin #androidx #android-архитектура-навигация
Вопрос:
Документы по навигации AndroidX в настоящее время в основном охватывают использование xml. Я хотел бы увидеть пример программного использования с Kotlin, с фрагментами (потому что на данный момент я не знаю другого навигатора).
Ответ №1:
Вот простой пример того, как можно программно использовать навигацию AndroidX, используя фрагменты с артефактами KTX:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val container = frameLayout(id = R.id.content) // From Splitties Views DSL. Equivalent to FrameLayout().apply { id = R.id.content }
setContentView(container)
// Add the NavHostFragment if needed
if (savedInstanceState == null) supportFragmentManager.transaction(now = true) {
val fragment = NavHostFragment()
add(R.id.content, fragment)
setPrimaryNavigationFragment(fragment)
}
// Use the Kotlin extension from the -ktx dependencies
// to find the NavController for the given view ID.
val navController = findNavController(R.id.content)
// Create the graph using the Kotlin DSL, setting it on the NavController
navController.graph = navController.createGraph(startDestination = R.id.nav_dest_main) {
fragment<MainFragment>(R.id.nav_dest_main) {
label = TODO("Put an actual CharSequence")
}
fragment<SomeFragment>(R.id.nav_dest_some_fragment) {
label = TODO("Put an actual CharSequence")
}
}
}
Комментарии:
1. Возможно ли сгенерировать график из Kotlin DSL?
Ответ №2:
В дополнение к примеру Louis, взгляните на официальное руководство по компонентам навигации — Создайте график программно, используя Kotlin DSL.