Как мне установить первые значения для viewmodel EditActivity из GetIntent

#java #android #android-intent #mvvm #viewmodel

#java #Android #android-намерение #mvvm #viewmodel

Вопрос:

У меня есть recyclerview, содержащий строки информации о фруктах, таких как название, цвет, вес, описание, соответствие блюд…

если я нажму кнопку, она должна загрузить эти значения строк в intent и перейти к startActivityForResult: EditActivity.

Ну, причина viewmodel заключается в том, чтобы предотвратить возврат вращения к значениям из GetIntent. Значения обновляются до sql только в mainactivity onreturnresultsomething… метод.

если я это сделаю «‘mviewmodel.name = intent.getStringExtra(name,»»):»‘ в mainactivity oncreate это просто перезаписало бы его при вращении, как если бы viewmodel вообще не было.

Я подумываю об использовании sharedpreferences, но есть способ получше, а androidviewmodel является антипаттером.

итак, из getintent, как мне добавить значения по умолчанию в viewmodel в editactivity и чтобы оно не возвращалось к этому при вращении?

спасибо всем!

Ответ №1:

поместите ваши значения в [SavedStateHandle]:https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle

 mviewmodel.savedStateHandle.set("name",name)
  

прежде чем устанавливать значение, проверьте, равно ли оно нулю или нет, что-то вроде:

 if(mviewmodel.savedStateHandle.get("name) == null){
   mviewmodel.savedStateHandle.set("name",name)
}
  

вы можете проверить это здесь: https://developer.android.com/topic/libraries/architecture/viewmodel-savedstate

Комментарии:

1. должен ли я поместить это в mainactivity oncreate?

Ответ №2:

Если вы используете текущий by viewModels или базовый ViewModelProvider шаблон, ваша ViewModel не будет воссоздана, поэтому вы можете добавить его в качестве параметра конструктора.

Проверьте ViewModelProvider.Фабрика для того, как это сделать. Кроме того, если вы планируете использовать Dagger, но у вас все еще есть параметры, которые вы хотели бы передать вручную, вы можете проверить эту библиотеку: https://github.com/halcyonmobile/ViewModelFactoryGenerator