Intereting Posts
Как запустить стандартный медиаплеер Android с его стандартным ui с файлом для игры через намерение? OpenGL на Android: любые конфликты при вызове функций OpenGL как на Java, так и на C ++? Как сохранить (растровое изображение) и получить изображение из базы данных sqlite в android? Графические изображения GridView Добавление строк в Cursor вручную Iccp: не распознает известный профиль sRGB, который был отредактирован Использование камеры в приложении Phonegap с использованием только ввода HTML без API камеры Robotium с Mockito или Easy Mock Диалоговое окно или форму, где пользователь может выбрать ввод данных или отмену Установите OnClickListener для элементов в ListView с двумя представлениями Переопределить первый день недели в йоде? Как сделать панель контекстного ActionMode наложением панели инструментов appcompat-v7, но не ящиком навигации? Сдвиг панели действий не обновляется при изменении ориентации Royalty Free Background Images для Android-приложений Как связать проект библиотеки в Android Studio

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

Поэтому я рассмотрел другие вопросы, и я не смог найти решение. В принципе, у меня есть родительский фрагмент и дочерний фрагмент, и мне нужно передать целое число дочернему фрагменту. Детский фрагмент определен в XML, поэтому я не могу прикрепить пакет, насколько я знаю. Похоже, это должно быть просто, но я не смог понять это.

Любая помощь в том, как это сделать, будет отличной. Благодаря!

Простое решение – получить ссылку на ваш дочерний фрагмент в родительском фрагменте onCreateView

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.parent_fragment, container, false); YourChildFragment fragment = (YourChildFragment) getChildFragmentManager().findFragmentById(R.id.child_fragment_id); // pass your data fragment.setMyInt(42); return view; } 

Для этого вы можете использовать интерфейс. Создайте интерфейс в родительском фрагменте и создайте его объект и метод getter-setter.

 interface YourListner{ void methodToPassData(Object data); } static YourListner listnerObj; public void setListnerObj(YourListner listnerObj) { this.listnerObj = listnerObj; } 

Реализуйте его в своем дочернем фрагменте.

Затем добавьте следующий код в родительский фрагмент.

 ChilefragmentName yourfrag=((ChilefragmentName) getSupportFragmentManager().findFragmentById(R.id.fragmentId)) if(yourfrag !=null) { //Set listner yourfrag.setListnerObj((ChilefragmentName)yourfrag); } if(listnerObj!=null) { //Pass your data listnerObj.methodToPassData(data); } 

Вы можете обрабатывать эти данные в реализованном методе у своих дочерних фрагментов.

Если у вас есть некоторые параметры для передачи фрагменту, который определяется через XML, я думаю, что лучше и просто – добавить его динамически. В этом случае вы можете передать два параметра param1 и param2 дочернему фрагменту следующим образом:

 public static YourFragment newInstance(String param1, String param2) { YourFragment fragment = new YourFragment(); Bundle args = new Bundle(); args.putString(ARG_PARAM1, param1); args.putString(ARG_PARAM2, param2); fragment.setArguments(args); return fragment; } public YourFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); } } 

Метод newInstance () сохраняет параметры в наборе аргументов пакета. Это будет полезно, если Android воссоздает фрагмент. В этом случае параметры извлекаются в onCreate() .