Невозможность активности с 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 варианта решения этой проблемы.

  1. Изменить зависимость DialogFragment, и используйте тот из android.app
  2. + Изменить myMethod() подпись для получения AppCompatActivity (из androidx) вместо Activity и позвони getSupportedFragmentManager().

Первое решение не подходит, так как я хочу продолжать использовать классы androidx везде, где это возможно. Во-вторых, тоже есть недостатки, несмотря на то, что AppCompatAcivitity - лучшая практика.

Вопрос: есть ли способ продолжать использовать зависимость androidx и иметь Activity параметр типа внутри myMethod()?

1 ответ

Вы должны использовать FragmentActivity (из androidx) вместо Activity как тип аргумента в myMethod() и позвони getSupportFragmentManager() чтобы получить FragmentManagerв теме. Это должно решить вашу проблему.

Другие вопросы по тегам