Отображение DialogFragment в PreferenceFragment с пространством имен AndroidX

В настоящее время мы переносим наше приложение для Android в новое пространство имен androidx, как описано на официальных страницах для разработчиков здесь https://developer.android.com/jetpack/androidx/migrate

К сожалению, некоторые из наших старых реализаций, похоже, не работают. Мы повторно используем DialogFragment (который изначально использовался вне настроек приложения) в одном из наших androidx.preference.PreferenceFragments. После перехода на androidx DialogFragment теперь требует отображения экземпляра androidx.fragment.app.FragmentManager, который больше не может быть получен путем вызова

FragmentManager fm = getFragmentManager();

в PreferenceFragment. Этот вызов по-прежнему будет предоставлять экземпляр android.app.FragmentManager. Я предполагаю, что это связано с тем, что PreferenceFragment не является производным от androidx.fragment.

Кто-нибудь когда-нибудь сталкивался с этой проблемой и знает решение, как я могу повторно использовать диалог в настройках?


person little_planet    schedule 09.10.2018    source источник


Ответы (1)


Чтобы получить правильный FragmentManager, нам нужно унаследовать от androidx.preference.PreferenceFragmentCompat вместо androidx.preference.PreferenceFragment. Это решило нашу проблему.

Дополнительную информацию о PreferenceFragmentCompat см. На главной странице разработчика Google.

person little_planet    schedule 11.10.2018