Как я могу передать данные в первый фрагмент при использовании архитектуры навигации? - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь передать набор экземпляров объекта из моей основной деятельности в первый фрагмент в цепочке других фрагментов, используя NavHostFragment.Я перепробовал все виды, но пакет всегда кажется нулевым, как только он достигает первого фрагмента.

Вот как я запускаю NavHostFragment (frameContainer - это элемент Frame Container в моем макете xml)

NavHostFragment navHost = NavHostFragment.create(R.navigation.claim_nav_graph);
getSupportFragmentManager().beginTransaction()
        .replace(R.id.frameContainer, navHost)
        .setPrimaryNavigationFragment(navHost)
        .commit();

В документации сказано, что существует 2 разных .create функции, одну из которых вы можете передать вторым аргументом в виде пакета, но Android Studio не позволяет мне использовать эту версию.

У кого-нибудь есть идеи?

Заранее спасибо!

1 Ответ

0 голосов
/ 09 апреля 2019

Похоже, это недостаток NavHostFragment, передача данных в первый фрагмент не представляется возможной, так как Bundle, который вы можете установить в качестве второго аргумента в функции create, перезаписывается по пути.

В конце концов, я решил это, собрав вместо этого связку в первом фрагменте упражнения. Я смог получить доступ к свойствам намерений, используя нижеприведенное.

// Kotlin
activity.intent?.extras?.getBundle(KEY_BUNDLE_ID)
// Java
getActivity().getIntent().getBundleExtra(KEY_BUNDLE_ID)

В этой ситуации мне было достаточно обходного пути, но было бы здорово, если бы это было возможно

...