如果您选择设置在Androdi Studio 3.4中创建项目的模板,则会看到示例应用程序,其中SettingsActivity
扩展AppCompatPreferenceActivity
扩展PreferenceActivity
扩展{{ 1}}扩展了ListActivity
,但没有扩展android.app.Activity
,这是通过{p>为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
,还是Google的下一个下一个地狱化身?!
答案 0 :(得分:2)
此模板已在Android Studio 3.5中完全重做以匹配Settings documentation:
将用户可配置设置集成到应用程序中的推荐方法是使用AndroidX首选项库。该库管理用户界面并与存储进行交互,以便您仅定义用户可以配置的单个设置。该库带有Material主题,可在设备和操作系统版本之间提供一致的用户体验。
AndroidX Preferences Library完全不需要您使用PreferenceActivity
-您会注意到它直接使用AppCompatActivity
,将首选项放入PreferenceFragmentCompat
中。随着AppCompatActivity
扩展FragmentActivity
,您将可以使用ViewModel
和其他AndroidX API,而不会出现问题。