Как правильно передать Enum в качестве аргумента фрагменту, используя safeargs компонента навигации - PullRequest
0 голосов
/ 29 ноября 2018

Документация описывает, как отправлять простые целые числа и строки.Например:

<argument
    android:name="myIntArg"
    android:defaultValue="255"
    app:argType="integer" />

В исходном фрагменте:

val action = OriginFragmentDirections.myAction(myInt)
findNavController().navigate(action)

В целевом фрагменте:

val receivedInt = DestinationFragmentArgs.fromBundle(arguments).myIntArg

Но, скажем, вместо myIntArg, я хотелотправить перечисление (myEnumArg).Как бы я это сделал?Что app:argType я бы использовал в своем аргументе?

1 Ответ

0 голосов
/ 29 ноября 2018

Редактировать: Согласно примечаниям к выпуску Navigation 1.0.0-alpha08 :

Safe Args поддерживает сериализуемые объекты, включая значения Enum.Типы enum могут установить значение по умолчанию, используя литерал enum без имени класса (например, app:defaultValue="READ") b / 111316353

Так что теперь это возможно - вы должны использоватьимя вашего класса Enum (т.е. com.example.EnumClass) или относительное имя (.EnumClass), которое автоматически добавит имя пакета вашего приложения к имени класса.

Предыдущий ответ:

Это невозможно в текущей версии Navigation (1.0.0-alpha07), но запрос существующей функции помечен как фиксированный, и возможность использовать перечисления в качестве аргументов будет доступна вalpha08

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...