使用 AndroidX 命名空间在 PreferenceFragment 中显示 DialogFragment
Showing a DialogFragment in PreferenceFragment with AndroidX Namespace
我们目前正在将我们的 Android 应用迁移到新的 androidx 命名空间,如此处的官方开发者页面所述 https://developer.android.com/jetpack/androidx/migrate
不幸的是,我们的一些旧实现似乎已损坏。我们在我们的 androidx.preference.PreferenceFragment
之一中重复使用 DialogFragment(最初在应用程序设置之外使用)。迁移到 androidx 后,DialogFragment 现在需要显示一个 androidx.fragment.app.FragmentManager
实例 - 无法再通过调用
接收
FragmentManager fm = getFragmentManager();
在 PreferenceFragment 中。此调用仍将提供 android.app.FragmentManager
的实例。我想这是因为 PreferenceFragment 不是从 androidx.fragment
.
派生的
有没有人遇到过这个问题并且碰巧知道解决方案我如何仍然可以在设置中重复使用对话框?
要获得正确的 FragmentManager,我们需要从 androidx.preference.PreferenceFragmentCompat
而不是 androidx.preference.PreferenceFragment
继承。这解决了我们的问题。
有关 PreferenceFragmentCompat 的详细信息,请参阅 Google Developer Homepage
我们目前正在将我们的 Android 应用迁移到新的 androidx 命名空间,如此处的官方开发者页面所述 https://developer.android.com/jetpack/androidx/migrate
不幸的是,我们的一些旧实现似乎已损坏。我们在我们的 androidx.preference.PreferenceFragment
之一中重复使用 DialogFragment(最初在应用程序设置之外使用)。迁移到 androidx 后,DialogFragment 现在需要显示一个 androidx.fragment.app.FragmentManager
实例 - 无法再通过调用
FragmentManager fm = getFragmentManager();
在 PreferenceFragment 中。此调用仍将提供 android.app.FragmentManager
的实例。我想这是因为 PreferenceFragment 不是从 androidx.fragment
.
有没有人遇到过这个问题并且碰巧知道解决方案我如何仍然可以在设置中重复使用对话框?
要获得正确的 FragmentManager,我们需要从 androidx.preference.PreferenceFragmentCompat
而不是 androidx.preference.PreferenceFragment
继承。这解决了我们的问题。
有关 PreferenceFragmentCompat 的详细信息,请参阅 Google Developer Homepage