Предположим, у меня есть объект класса во фрагменте A и я передал его фрагменту B. Когда нажата кнопка вверх (кнопка возврата), я хочу, чтобы тот же объект был передан обратно.
Я могу получить чтобы узнать, когда нажимается кнопка вверх (кнопка назад), и узнать имя фрагмента. Но отправка параметров не работает. Он показывает, что студент val отсутствует и не имеет значения по умолчанию. Когда я задаю значение по умолчанию, это приводит к ошибке слишком много аргументов, предоставленных для publi c open fun fragmentBTofragnentA
Вот код ниже.
override fun onSupportNavigateUp (): Boolean {
val navController = this.findNavController(R.id.myNavHostFragment)
Log.d("Up button", "Main activity")
val id = navController.currentDestination!!.id
Log.d("Now id is: ", "${id.toString()}")
val label = navController.currentDestination!!.label
Log.d("Now id is: ", "${label.toString()}")
if (label == "FragmentB") {
navController.navigate(FragmentBDirections.actionFragmentBToFragmentA(
obj
)
return false
}
return navController.navigateUp()
файл навигации
<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/navigation"
app:startDestination="@id/fragmentA">
<fragment
android:id="@+id/fragmentA"
android:name="com.example.fragmentdatapassings.FragmentA"
android:label="FragmentA">
<action
android:id="@+id/action_fragmentA_to_fragnentB"
app:destination="@+id/fragmentB" />
<argument android:name="student"
app:argType="com.example.StudentWork.Student" />
</fragment>
<fragment
android:id="@+id/fragmentB"
android:name="com.example.fragmentdatapassings.FragmentB"
android:label="FragmentB">
<action
android:id="@+id/action_fragmentB_to_fragnentA"
app:destination="@+id/fragmentA" />
<argument android:name="student"
app:argType="com.example.StudentWork.Student" />
</fragment>
Любая помощь приветствуется. Заранее спасибо.