Я просмотрел пару примеров, но либо в них слишком много абстракций, либо в устаревших руководствах. Я хотел бы реализовать эту функцию в минимально возможном порядке. Мне нужна помощь с классом UserForm, когда User
передается в качестве аргументов в Навигационная Архитектура.
Модуль приложения build.gradle Я добавил это
android {
...
dataBinding {
enabled = true
}
}
Пользователь Класс
@Parcelize
data class User(var first: String, var last: String): Parcelable
FormFragment.kt
class UserForm: Fragment() {
private val user by lazy {
arguments?.getParcelable("user") ?: User("John", "Doe")
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_form, container, false)
}
}
фрагмент_форм. xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable name="user" type="data.User" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/first"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text"
android:text="@{user.first}" />
<EditText
android:id="@+id/last"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text"
android:text="@{user.last}" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
Некоторые фрагменты