Я слежу за этим codelab от Google, но он не может сохранить данные. Вот ссылка
https://codelabs.developers.google.com/codelabs/android-lifecycles/#6
Класс активности
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);
}
});
}
}
класс модели представления
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);
Но ничего не получалось, когда я уничтожил приложение и открыл его обратно, данные все еще не сохраняются.