Просто не могу заставить SavedState на ViewModel работать, что бы я ни пыталсяAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Просто не могу заставить SavedState на ViewModel работать, что бы я ни пытался

Сообщение Anonymous »

Я уже много лет пытаюсь получить ViewModel, используя работающую SavedStateModel. Возможно, я упускаю что-то совершенно очевидное, я перешел к самому базовому действию и до сих пор не могу этого понять. Он продолжает возвращаться на главный экран и обратно (хотя я думаю, что это вообще проблема ViewModel), но не тогда, когда приложение закрыто.
Вот заархивированный проект Android Studio, извините. за то, что вы не предоставили его вообще: https://www.slasheethecow.com/code/MooSavedState.zip
Изменить: Вместо того, чтобы копировать/ вставьте все, что я заархивировал в проект Android Studio. Удалена куча других (более сложных) действий и тому подобное, но я почти уверен, что это все равно будет работать.
Вот действие, CowSaved.kt:

Код: Выделить всё

package com.slasheethecow.moosavedstate

import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity

class CowSaved : AppCompatActivity() {

val cowModel: CowSavedModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_cow_saved)
setStuffUp()
}

private fun setStuffUp() {
findViewById(R.id.cowSaved_submitButton).setOnClickListener {
cowModel.cowSetName(findViewById(R.id.cowName_editText).text.toString())
}

cowModel.cowName.observe(this, {
findViewById(R.id.cowSaved_displayView).text = "${resources.getString(R.string.cow_prefix)} $it" ?: ""
})
}
}
Вот ViewModel, CowSavedModel.kt:

Код: Выделить всё

package com.slasheethecow.moosavedstate

import androidx.lifecycle.LiveData
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel

class CowSavedModel(private val myState: SavedStateHandle): ViewModel() {

companion object {
val KEY_NAME = "cow_saved_name_key"
}

val cowName: LiveData = myState.getLiveData(KEY_NAME)

fun cowSetName(newname: String) {
myState.set(KEY_NAME, newname)
}
}
И эти, вероятно, не имеют значения, но вот макет: activity_cow_saved.xml Вот соответствующие строки: cow_strings.xml

Код: Выделить всё


Type in me! You know you want to.
Do me first! Actually, nah.
Grats! You\'re a cow named: 

Вот как это объявлено в манифесте AndroidManifest.xml (да):

Код: Выделить всё













Подробнее здесь: [url]https://stackoverflow.com/questions/66366348/just-cant-get-savedstate-on-viewmodel-working-no-matter-what-i-try[/url]
Ответить

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

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

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

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

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