Вы можете попробовать это:
1-й шаг: -
val dashboard = "Dashboard"
взять переменную, подобную этой, вы можете принять ее имя в качестве имени фрагмента, так что название страницы вы можно проверить вот так MainActivity().dashboard
Теперь 2-й шаг: -
создать один класс и написать функцию в этом классе
fun openPage(
activity: Activity,
pagename: String?, model: PaymentDetails
) {
when (pagename) {
MainActivity().dashboard -> {
val mfragment = DashboardFragment()
(activity as MainActivity).fragmentManager.beginTransaction()
.replace(R.id.nav_host, mfragment).commit()
val a = Bundle()
a.putSerializable("model", model)
mfragment.arguments = a
}
}
}
возьмите пару ключ-значение, как я беру всю свою модель, и ключ - модель , в моем коде вы можете написать любую вещь.
3-й шаг: -
Сделайте вашу модель Сериализуемой
4-й шаг: - Когда вы добавляете свои значения в модель, добавьте детали и добавьте вашу модель для метода, в котором вы хотите использовать эти значения как следующие
val payment = PaymentDetails(
type,
price,
name,
id,
)
paymentData!!.add(payment)
CustomMethods().openPagePaymentDetails(
activity!!,
MainActivity().sessionPaymentFragment, payment
)
5-й шаг: -
Объявите и инициализируйте ваш объект с типом вашей модели, как показано ниже:
//Declare
private var model: PaymentDetails? = null
//initialise
model = arguments!!.getSerializable("model") as PaymentDetails?
И теперь, наконец, вы можете получить доступ к значению предыдущего фрагмента в следующем фрагменте следующим образом:
var type: String
type = model!!.type
Примечание: - пожалуйста, не забудьте сделать класс вашей модели Сериализуемый
Надеюсь, это поможет вам.