Я использую граф навигации Android и отправляю аргументы. Ниже показано, как я получаю эти аргументы:
val args: MyFragmentArgs by navArgs()
Я сделал это спонтанно:
var args: MyFragmentArgs? by navArgs()
и после того, как я их использовал, я установил для них значение null:
override fun onStart() { // Need to do this in onStart
useMyArgsOnFirstTimeOpen(args.myObject)
args = null
}
Очевидно, это не работает, и я получаю: «Отсутствует метод setValue для делегата типа NavArgsLazy»
I хотел сделать это, чтобы гарантировать, что эти аргументы будут использоваться только при первом открытии фрагмента. И не после того, как он был убит и перезапущен.
Могу ли я сделать что-нибудь умное с navArgs, изменить его или как-то обернуть, чтобы добиться желаемого эффекта?
// want to enable either of these
args = null
args.myObject = null
Ниже приведен код navArgs()
@MainThread
inline fun Fragment.navArgs() = NavArgsLazy(Args::class) {
arguments ?: throw IllegalStateException("Fragment $this has null arguments")
}
Или решение: изменить объект, переданный в аргументах, на класс, который поддерживает его очистку? то есть:
args.myObject.clear() // wish to avoid this
Подробнее здесь: https://stackoverflow.com/questions/588 ... -arguments