Передача данных между двумя фрагментами без использования активности

Я хочу передать данные между двумя фрагментами без использования активности и активности фрагмента.

Я не хочу передавать данные между фрагментами, используя такие действия: Общение с другими фрагментами

Ниже мой сценарий:

У меня есть один родительский фрагмент, и внутри него есть два дочерних фрагмента. Теперь мне нужно передать данные между этими двумя фрагментами. Как этого добиться?

Я посмотрел на это: Event Bus, но не получил рабочий пример для фрагментов.

Есть ли другая альтернатива для передачи данных между фрагментами?

Любая помощь будет оценена.

Отредактировано в соответствии с ответом InnocentKiller:

В FragmentOne я реализовал:

    FragmentTwo = new FragmentTwo();
    Bundle bundle = new Bundle();
    bundle.putString("Hello", "My name is Siddharth");
    fragment.setArguments(bundle);

В FragmentTwo я реализовал:

    Bundle bundle = this.getArguments();
    String myInt = bundle.getString("Hello","Test");
    mStartTripButton.setText(myInt);

3 ответа

Лучший способ обмена данными между действием / фрагментами, фрагментом / фрагментом /, действием / действием, классом / классом, создать общий синглтон-класс, такой как:

public class DataHolderClass {
private static DataHolderClass dataObject = null;

private DataHolderClass() {
    // left blank intentionally
}

public static DataHolderClass getInstance() {
    if (dataObject == null)
        dataObject = new DataHolderClass();
    return dataObject;
}
private String distributor_id;;

 public String getDistributor_id() {
    return distributor_id;
 }

 public void setDistributor_id(String distributor_id) {
    this.distributor_id = distributor_id;
 }
}

теперь устанавливается из любого места (фрагмент, действие, класс) в любом событии, прежде чем перейти на новый экран

DataHolderClass.getInstance().setDistributor_id("your data");

теперь доберись куда угодно (фрагмент, активность, класс)

 String _data = DataHolderClass.getInstance().getDistributor_id();

Вы можете использовать EventBus https://github.com/greenrobot/EventBus для передачи любого сложного объекта в Android.

Пример передачи объекта из одного действия в другое:

Добавьте ваш объект на EventBus:

EventBus.getDefault().postSticky(anyObject);
startActivity(new Intent(getActivity(), SomeActivity.class));

В любом месте в SomeActivity:

AnyObject anyObject = EventBus.getDefault().getStickyEvent(AnyObject.class);

Этот пример просто для того, чтобы показать, что он работает в разных видах деятельности, вы можете позвонить getStickyEvent чтобы получить любой объект в любом месте вашего кода.

Таким образом, вы можете опубликовать объект во фрагменте A и использовать getStickyEvent во фрагменте B, чтобы получить его.

Это особенно удобно, если у вас много аргументов и / или сложных объектов, которые вы хотите переместить из одного места в другое. Просто создайте один объект-держатель, содержащий методы getter / setters для аргументов, а затем передайте его. Гораздо проще, чем передавать их отдельно и как-то сериализовать сложные объекты.

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

Используйте Bundle, поэтому напишите ниже код в первом фрагменте, откуда вы хотите отправить данные.

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putString("message", "From Activity");
fragment.setArguments(bundle);

и чтобы получить эти данные, используйте следующий код в другом фрагменте

String strtext=getArguments().getString("message");
Другие вопросы по тегам