要解决Android SavedStateHandle在ViewModel中不保存的问题,你可以按照以下步骤进行操作:
class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
// ViewModel的其他代码...
}
class MyViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
private val dataKey = "myData"
fun saveData(data: String) {
savedStateHandle.set(dataKey, data)
}
fun getData(): String? {
return savedStateHandle.get(dataKey)
}
}
class MyActivity : AppCompatActivity() {
private val viewModel: MyViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Activity的其他代码...
val data = "Hello, SavedStateHandle!"
viewModel.saveData(data)
val savedData = viewModel.getData()
Log.d(TAG, "SavedData: $savedData")
}
}
在上述代码中,ViewModel中的SavedStateHandle对象会自动保存数据,以便在Activity或Fragment重建时恢复数据。你可以根据需求自定义数据的保存和获取逻辑。