У меня есть два занятия: MainActivity
& LoginActivity
.И у меня есть два отдельных графика для каждого занятия.У меня также есть пользовательский Fragment
, в котором хотелось бы показывать как LoginActivity
, так и MainActivity
.Я легко могу включить мой <fragment>
в оба навигационных графика.
Однако становится сложно, когда у меня есть разные аргументы для моего фрагмента, в зависимости от того, в каком графе навигации он находится.
Скажем, в моем nav_main
я определил так,
<fragment
android:id="@+id/simpleFragment"
android:name="com.example.common.SimpleFragment">
<argument
android:name="title"
app:argType="string"/>
</fragment >
И в моем nav_login
у меня есть
<fragment
android:id="@+id/simpleFragment"
android:name="com.example.common.SimpleFragment">
<argument
android:name="header"
app:argType="string"/>
</fragment >
Единственное отличие состоит в том, что у меня есть два разных аргумента, один - title
, а другой - header
.Если я строю проект, я получаю один класс SimpleFragmentArgs
, где он объединяет эти два объявления в одно.Я не знаю, как это сливается, но мне кажется, что это случайно.Итак, выше двух объявлений дал мне SimpleFragmentArgs
с одним параметром header
.Параметр title
был проигнорирован.Мой вопрос не о том, что выживает, а что нет.Я пытаюсь подчеркнуть, что вы не можете использовать фрагменты с аргументами.
Я все еще могу использовать традиционный arguments
во Fragment и получать ошибки с тегами, но библиотека SafeArgs, которую рекомендует Navigation Component
, генерирует так много избыточного, непригодного для использования кода.Я использую библиотеку SafeArgs в обычных случаях, когда у меня есть одно представление фрагмента.Но если у меня будет больше динамических фрагментов, то это приведет к большим потерям, что, как мне кажется, нехорошая архитектура.
Итак, есть ли лучшая архитектура для использования, когда дело доходит до повторного использования фрагментов и аргументов в компоненте навигации?