Сейчас я изучаю Kotlin, и новое задание по умолчанию для Навигации по умолчанию реализовано по-другому. Теперь у вас нет onNavigationItemSelected, у вас есть только создание и инициализация onCreate (), а затем onSupportNavigateUp (), который не показывает мне, где обрабатывается событие click.
Я быхотелось бы узнать, как отправить некоторые данные с помощью этой новой структуры Kotlin Navigation Drawer. Код, сгенерированный в основной активности:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
val navView = findViewById(R.id.nav_view)
val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_done,
R.id.nav_todo,
R.id.nav_logout
), drawerLayout
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
}
override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.nav_host_fragment)
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}
}
файл activity_main.xml:
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
Файл content_main.xml:
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />
иФайл mobile_navigation.xml:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mobile_navigation"
app:startDestination="@+id/nav_done">
<fragment
android:id="@+id/nav_done"
android:name="caiofa.com.task.ui.tasklist.TaskListFragment"
android:label="@string/menu_done"
tools:layout="@layout/fragment_task_list" >
</fragment>
<fragment
android:id="@+id/nav_todo"
android:name="caiofa.com.task.ui.home.HomeFragment"
android:label="@string/menu_todo"
tools:layout="@layout/fragment_home"
/>
<fragment
android:id="@+id/nav_logout"
android:name="caiofa.com.task.ui.slideshow.SlideshowFragment"
android:label="@string/menu_logout"
tools:layout="@layout/fragment_slideshow" />
</navigation>