Если вы используете версию 1.0.0-alpha07
, раньше можно было сделать что-то вроде этого:
(destination as? FragmentNavigator.Destination)?.let { destinationClass ->
val isNewFullscreen = destinationClass.fragmentClass.superclass == FullScreenFragment::class.java
//... adjust paddings and hide action bar, etc.
Это подход, который я использовал для одного приложения Activity, имеющего два суперкласса Fragment,одним из них является FullScreenFragment (тот, который вы видите в примере), который скрывает панель действий и панель навигации, а также NavigationFragment (название вводит в заблуждение, но на этом изображении отображаются панель навигации и панель действий).
Проблема в том, что вам также необходимо настроить отступ фрагмента навигации по умолчанию, поскольку для FullScreenFragments он будет занимать весь экран, тогда как NavigationFragment должен учитывать как действие, так и панель навигации.
Теперь с новым 1.0.0-alpha08
FragmentNavigatio.Destination.fragmentClass
больше не доступен, поэтому я все еще думаю, как решить эту проблему.Я рассматриваю возможность использования destination.id == R.id.someFullScreenFragment
, это определенно менее хакерски, чем то, что у меня есть на данный момент, но мне придется отслеживать список идентификаторов.
В любом случае, это невозможно,Насколько я знаю, чтобы получить экземпляр самого фрагмента, лучшее, что вы можете сделать, это вывести пункт назначения и позволить вашему единственному действию организовать представления соответственно.