Получение ViewModel для SettingsActivity (MVVM, Android P) - PullRequest
0 голосов
/ 21 мая 2019

Если вы выберете шаблон с Настройки при создании проекта в Androdi Studio 3.4, вы увидите пример приложения с SettingsActivity расширением AppCompatPreferenceActivity расширением PreferenceActivity расширением ListActivity расширением android.app.Activity, но не FragmentActivity, который необходим для создания ViewModel для SettingsActivity с помощью

SettingsViewModel viewModel

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    viewModel = ViewModelProviders.of(this, viewModelFactory).get(SettingsViewModel.class);
}

, поскольку ViewModelProviders.of() может принять только FragmentActivity в качестве первого аргумента.

Можно ли создать ViewModel для AppCompatPreferenceActivity или это очередная реинкарнация ада с настройками от Google?!

1 Ответ

2 голосов
/ 21 мая 2019

Этот шаблон был полностью переделан в Android Studio 3.5 для соответствия документации по настройкам :

Рекомендуемый способ интеграции настраиваемых пользователем настроек в ваше приложение - использовать AndroidXБиблиотека предпочтений.Эта библиотека управляет пользовательским интерфейсом и взаимодействует с хранилищем, так что вы определяете только отдельные параметры, которые пользователь может настроить.Библиотека поставляется с темой Material, которая обеспечивает согласованное взаимодействие с пользователем на всех устройствах и версиях ОС.

Библиотека настроек AndroidX вообще не требует использования PreferenceActivity -вы заметите, что он использует AppCompatActivity напрямую, помещая настройки в PreferenceFragmentCompat.Поскольку AppCompatActivity расширяет FragmentActivity, вы сможете без проблем использовать ViewModel и другие API AndroidX.

...