【问题标题】:Getting ViewModel for SettingsActivity (MVVM, Android P)获取 SettingsActivity 的 ViewModel (MVVM, Android P)
【发布时间】:2019-05-21 05:19:48
【问题描述】:

如果您选择带有设置的模板在 Androdi Studio 3.4 中创建项目,您将看到带有SettingsActivity 扩展AppCompatPreferenceActivity 扩展PreferenceActivity 扩展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 或者它是具有谷歌偏好的下一个地狱转世?!

【问题讨论】:

    标签: android android-preferences android-viewmodel android-mvvm viewmodelproviders


    【解决方案1】:

    此模板已在 Android Studio 3.5 中完全重做,以匹配 Settings documentation

    将用户可配置设置集成到您的应用程序中的推荐方法是使用 AndroidX 首选项库。该库管理用户界面并与存储交互,以便您仅定义用户可以配置的各个设置。该库附带一个 Material 主题,可跨设备和操作系统版本提供一致的用户体验。

    AndroidX Preferences Library 根本不需要您使用PreferenceActivity - 您会注意到它直接使用AppCompatActivity,将首选项放入PreferenceFragmentCompat。由于AppCompatActivity 扩展了FragmentActivity,您将能够毫无问题地使用ViewModel 和其他AndroidX API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-29
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2016-06-20
      • 2013-07-04
      • 1970-01-01
      相关资源
      最近更新 更多