2014-12-05 2 views
1

Я пытаюсь передать данные из одного фрагмента другому, используя обратный вызов, но им не удалось это сделать. В своей деятельности я вызываю фрагмент A, который вызывает фрагмент B. В фрагменте B я выбираю элемент, и мне нужно передать этот элемент фрагменту A. Может кто-нибудь сказать мне, как я могу это сделать?Передача данных между двумя фрагментами с использованием обратного вызова

Я знаю, что с обратным вызовом я могу получить данные от фрагмента B к активности, но как я могу отправить эти данные фрагменту A с сохранением состояния этого фрагмента?

+0

Вы можете добавить слушателя, или широковещательный приемник. – zgc7009

+0

@ zgc7009 Можете ли вы привести пример? –

+0

Храните его в SharedPreferences, поэтому он доступен в любом месте - тогда нет прослушивателей/приемников. И/или используйте библиотеку Отто, которая обеспечивает Android с помощью необходимой шины уведомлений. – Alchete

ответ

2

Ваша деятельность должна осуществлять обратный вызов, обратный вызов может затем найти фрагмент B и отправить данные в один из его общедоступных методов. Если вы сделаете общедоступный метод в фрагменте B, примите любые данные, которые вам нужны, вы сможете пройти его прямо.

Что-то вроде этого:

@Override 
public void onCallback(String data) { 
    FragmentB frag = (FragmentB) getSupportFragmentManager().findFragmentByTag(FragmentB.class.getSimpleName()); 
    if (frag != null) { 
     frag.myMethod(data); 
    } 
} 
2

Почему бы не использовать Activity в качестве «регулировщика»: есть Fragment обратный вызов Activity то есть Activity вызов в Fragment B. Держите фрагменты разделены таким образом, они не знают друг друга.

+0

Мне это нравится Идея также, если фрагменты используются только в одном действии, и вы не создаете избыточные коды, управляющие одними и теми же фрагментами в разных действиях. – zgc7009

Смежные вопросы