Невозможно передать данные из одного фрагмента в другой через пакет в setGraph navController - PullRequest
0 голосов
/ 08 мая 2020

Я собираюсь передавать данные между фрагментами; Я делаю это, используя bundle и помещая его в аргумент setGraph, но я не могу получить его в другом фрагменте, и он всегда возвращает null. в чем проблема?

Навигация по фрагменту

Bundle bundle = new Bundle();
bundle.putString("deviceSerialNo", "abc");
Log.d("TAGTAG", "onClick: " + bundle);
navController.setGraph(R.navigation.nav_graph, bundle);
navController.navigate(R.id.action_FirstFragment_to_SecondFragment);

Второй фрагмент

    @Override
    public View onCreateView(
            LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState
    ) {

        Log.d("TAGTAG", "onCreateView: " + getArguments());
        if (getArguments() != null) {
            String string = getArguments().getString("deviceSerialNo");
        }


        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_second, container, false);
    }

1 Ответ

1 голос
/ 08 мая 2020

Согласно setGraph() документации , Bundle, который вы передаете, называется startDestinationArgs:

startDestinationArgs: аргументы для отправки в начальный пункт назначения графика

Таким образом, единственная причина использовать setGraph, который принимает Bundle, - это если вашему FirstFragment нужно получить bundle для аргументов. Вам нужно будет вручную передать эти аргументы в любой другой фрагмент, например SecondFragment, как часть вызова navigate().

// Pass the arguments to the SecondFragment
navController.navigate(R.id.action_FirstFragment_to_SecondFragment, bundle);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...