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

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

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

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

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

Я рассмотрел это: 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); 

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

 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 чтобы получить anyObject в любом месте вашего кода.

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

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

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

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

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

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

 String strtext=getArguments().getString("message"); 
Intereting Posts
В C, tan (30) дает мне отрицательное значение! Зачем? Scala неявное динамическое кастинг Как определить, когда VideoView начинает играть (Android)? Использование Gstreamer или ffmpeg для создания клиента rtsp на Android Android Spinner с CheckBox setChecked (true) не работает Android Drawable vs Asset при загрузке изображения Как вы называете основную деятельность запуска из другого вида деятельности? Android SDK – camera2 – Нарисуйте прямоугольник над TextureView Горизонтальное прокрутка в элементе ListView? Используйте различные ресурсы для различных аппликаций приложений, используя gradle Android: виджеты не отображаются в ящике приложений ICS Как отправить код, который будет запускаться в основном потоке Android из отдельного потока на C ++? Значок приложения Android Launcher не обновлен до нового значка после обновления рынка Растровая круговая обрезка в андроиде Обнаружение устройства обнаружения не работает для DEFAULT_MEDIA_RECEIVER_APPLICATION_ID