获取 SettingsActivity 的 ViewModel(MVVM,Android P)
Getting ViewModel for SettingsActivity (MVVM, Android P)
如果您选择带有 设置 的模板在 Androdi Studio 3.4 中创建项目,您将看到 SettingsActivity
扩展 AppCompatPreferenceActivity
扩展 [=14] 的示例应用=] 扩展 ListActivity
扩展 android.app.Activity
,但不扩展 FragmentActivity
,这是通过
为 SettingsActivity
创建 ViewModel
所必需的
SettingsViewModel viewModel
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewModel = ViewModelProviders.of(this, viewModelFactory).get(SettingsViewModel.class);
}
因为 ViewModelProviders.of()
可能只接受 FragmentActivity
作为第一个参数。
是否可以为AppCompatPreferenceActivity
创造一个ViewModel
或者是Google偏好的下一个地狱转世?!
此模板已在 Android Studio 3.5 中完全重做以匹配 Settings documentation:
The recommended way to integrate user configurable settings into your application is to use the AndroidX Preference Library. This library manages the user interface and interacts with storage so that you define only the individual settings that the user can configure. The library comes with a Material theme that provides a consistent user experience across devices and OS versions.
AndroidX Preferences Library 根本不需要您使用 PreferenceActivity
- 您会注意到它直接使用 AppCompatActivity
,将首选项放入 PreferenceFragmentCompat
。由于 AppCompatActivity
扩展了 FragmentActivity
,您将能够毫无问题地使用 ViewModel
和其他 AndroidX API。
如果您选择带有 设置 的模板在 Androdi Studio 3.4 中创建项目,您将看到 SettingsActivity
扩展 AppCompatPreferenceActivity
扩展 [=14] 的示例应用=] 扩展 ListActivity
扩展 android.app.Activity
,但不扩展 FragmentActivity
,这是通过
SettingsActivity
创建 ViewModel
所必需的
SettingsViewModel viewModel
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewModel = ViewModelProviders.of(this, viewModelFactory).get(SettingsViewModel.class);
}
因为 ViewModelProviders.of()
可能只接受 FragmentActivity
作为第一个参数。
是否可以为AppCompatPreferenceActivity
创造一个ViewModel
或者是Google偏好的下一个地狱转世?!
此模板已在 Android Studio 3.5 中完全重做以匹配 Settings documentation:
The recommended way to integrate user configurable settings into your application is to use the AndroidX Preference Library. This library manages the user interface and interacts with storage so that you define only the individual settings that the user can configure. The library comes with a Material theme that provides a consistent user experience across devices and OS versions.
AndroidX Preferences Library 根本不需要您使用 PreferenceActivity
- 您会注意到它直接使用 AppCompatActivity
,将首选项放入 PreferenceFragmentCompat
。由于 AppCompatActivity
扩展了 FragmentActivity
,您将能够毫无问题地使用 ViewModel
和其他 AndroidX API。