Как получается это значение (через savestatehandle)Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как получается это значение (через savestatehandle)

Сообщение Anonymous »

Я прохожу курс Android-разработки, на курсе мне поручили написать следующее:
class ItemDetailsViewModel(
savedStateHandle: SavedStateHandle,
private val itemsRepository: ItemsRepository
) : ViewModel() {

private val itemId: Int = checkNotNull(savedStateHandle[ItemDetailsDestination.itemIdArg])

//...
}

Я не могу понять, как получается itemId, и хочу знать, есть ли у кого-нибудь указатели.
Место назначения сведений об элементе:
object ItemDetailsDestination : NavigationDestination {
override val route = "item_details"
override val titleRes = R.string.item_detail_title
const val itemIdArg = "itemId"
val routeWithArgs = "$route/{$itemIdArg}"
}

Инициализатор:
object AppViewModelProvider {
val Factory = viewModelFactory {
//...

// Initializer for ItemDetailsViewModel
initializer {
ItemDetailsViewModel(
this.createSavedStateHandle(),
inventoryApplication().container.itemsRepository
)
}

//...
}
}

Я пробовал использовать отладчик, но он мне не очень помог, он просто показывает, что есть вызов:
class SavedStateHandle {
//...

@MainThread
operator fun get(key: String): T? {
return try {
@Suppress("UNCHECKED_CAST")
regular[key] as T?
} catch (e: ClassCastException) {
// Instead of failing on ClassCastException, we remove the value from the
// SavedStateHandle and return null.
remove(key)
null
}
}

//...
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... tatehandle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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