Обновить значения во фрагменте, не создавая его заново - PullRequest
0 голосов
/ 22 октября 2018

У меня есть два фрагмента, например. FragA и FragB .FragA имеет RecyclerView, щелчок по которому перенаправляет пользователя на FragB.В FragB пользователь обновляет значение, которое должно быть установлено в TextView в FragA.Но я не хочу терять состояние FragA

. Для переключения фрагментов я делаю следующее.

Fragment fragment = new FragB();
fragment.setArguments(bundle);
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.home_frame, fragment, m_userName).addToBackStack(null);
fragmentTransaction.commit();

В FragB я создаю пакет с обновленной информацией: -

FragA mFragA = new FragA ();
Bundle args = new Bundle();
args.putParcelable("UpdatedText", "SomeText");
mFragA .setArguments(args);
getFragmentManager().beginTransaction().remove(this);
getFragmentManager().beginTransaction().add(R.id.container, mFragA).commit();

В приведенном выше случае состояние FragA остается тем же, но ни один из методов не вызывается, поскольку фрагмент не воссоздан.Следовательно, значение textview не обновляется.

Как я могу обновить значение TextView в FragA с помощью информации из FragB наряду с поддержанием состояния FragA?

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Правильный способ: в основном вы должны правильно обновлять ваши POJO.Используйте интерфейс, чтобы сообщить об этом изменении действию, а затем из действия обновите свои изменения в представлении реселлера в Frag A с уведомлением об изменении.

Альтернативный способ: используйте шину событий.Для этого есть довольно много библиотек, и у вас также есть собственная шина событий.

Otto - одна из них.легко интегрируется.

0 голосов
/ 22 октября 2018

вам нужно создать класс, который содержит строку, и вы создаете экземпляр этого класса в основном упражнении, и вы вызываете его во фрагменте B, чтобы инициализировать его с помощью UpdateText, например, вы делаете class.setTextUpdate ("new text") и во фрагменте A вы делаете class.getTextUpdate

...