gpt4 book ai didi

java - SavedState ViewModel 使用 SavedStateViewModelFactory

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:19 25 4
gpt4 key购买 nike

我正在关注谷歌的这个 Codelab,但它无法保存数据。这是链接

https://codelabs.developers.google.com/codelabs/android-lifecycles/#6

Activity 类别

public class SavedStateActivity extends AppCompatActivity {

private SavedStateViewModel mSavedStateViewModel;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.saved_state_activity);

// Obtain the ViewModel
// mSavedStateViewModel = new ViewModelProvider(this).get(SavedStateViewModel.class);
mSavedStateViewModel = new ViewModelProvider(this,new SavedStateViewModelFactory(getApplication(),this)).get(SavedStateViewModel.class);

// Show the ViewModel property's value in a TextView
mSavedStateViewModel.getName().observe(this, new Observer<String>() {
@Override
public void onChanged(String savedString) {
((TextView)findViewById(R.id.saved_vm_tv))
.setText(getString(R.string.saved_in_vm, savedString));

}
});

// Save button
findViewById(R.id.save_bt).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String newName = ((EditText)findViewById(R.id.name_et)).getText().toString();
mSavedStateViewModel.saveNewName(newName);

}
});
}
}

View 模型类

public class SavedStateViewModel extends ViewModel {

private static final String NAME_KEY = "name";

private SavedStateHandle mState;

public SavedStateViewModel(SavedStateHandle savedStateHandle) {
mState = savedStateHandle;
}

// Expose an immutable LiveData
LiveData<String> getName() {
// getLiveData obtains an object that is associated with the key wrapped in a LiveData
// so it can be observed for changes.
return mState.getLiveData(NAME_KEY);
}

void saveNewName(String newName) {
// Sets a new value for the object associated to the key. There's no need to set it
// as a LiveData.
mState.set(NAME_KEY, newName);
}
}

如您所见,我已经在以下位置添加了 SavedStateViewModelFactory mSavedStateViewModel = new ViewModelProvider(this,new SavedStateViewModelFactory(getApplication(),this)).get(SavedStateViewModel.class);

但是当我销毁应用程序并将其打开时,没有任何作用,数据仍然没有保留。

最佳答案

Google 表示,针对已保存状态的解决方案仍处于测试阶段。目前,持久保存数据的唯一解决方案是使用 Room。

关于java - SavedState ViewModel 使用 SavedStateViewModelFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59728260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com