Невозможность активности с androidx
Я столкнулся с проблемой, связанной с несовместимостью Activity getFragmentManager() с androidx.FragmentManager.
Итак, у меня есть следующий метод:
public void myMethod(Activity activity) {
/**
* do some staff here
*/
//now we should open a DialogFragment
new MyCustomDialogFragment().show((activity).getFragmentManager(), MyCustomDialogFragment.TAG);
}
и вот я получаю ошибку
"Can not resolve method show(android.app.FragmentManager, java.lang.String)
.
Все это потому что мой
DialogFragment
из
androidx.fragment.app
пакет когда
Activity
с
getFragmentManager()
возвращается
FragmentManager
из
android.app
пакет.
Я вижу 2 варианта решения этой проблемы.
- Изменить зависимость
DialogFragment
, и используйте тот изandroid.app
- + Изменить
myMethod()
подпись для полученияAppCompatActivity
(из androidx) вместоActivity
и позвониgetSupportedFragmentManager()
.
Первое решение не подходит, так как я хочу продолжать использовать классы androidx везде, где это возможно. Во-вторых, тоже есть недостатки, несмотря на то, что AppCompatAcivitity - лучшая практика.
Вопрос: есть ли способ продолжать использовать зависимость androidx и иметь
Activity
параметр типа внутри
myMethod()
?
1 ответ
Вы должны использовать
FragmentActivity
(из androidx) вместо
Activity
как тип аргумента в
myMethod()
и позвони
getSupportFragmentManager()
чтобы получить
FragmentManager
в теме. Это должно решить вашу проблему.