Управление аргументами графа навигацииAndroid

Форум для тех, кто программирует под Android
Anonymous
Управление аргументами графа навигации

Сообщение Anonymous »

Я использую граф навигации 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

Вернуться в «Android»