Intereting Posts
Не получать ответ в сокетном соединении Что произойдет, если я оставлю все свои изображения в папке drawable-hdpi? Как сделать кнопку «Edit» «Готово» Android и скрыть клавиатуру при нажатии? Невозможно получить прозрачность DialogFragment SetTextAppearance устарел андроид как использовать? Пользовательский интерфейс Android Sliding Menu OnActivityResult (), вызванный преждевременно Как обрабатывать вызовы в AudioTrack из jni без сбоев? Пока не удалось достичь Gapless аудио-цикла на Android Выбор времени и даты для выбора даты и времени в андроиде Невозможно распространять приложение на Android Wear в консоли разработчика Google Play Приложение Android перезагружается при открытии, нажав значок приложения Библиотека дизайна Android 25.1.0 заставляет FloatingActionButton.Behavior прекратить работу Можно ли отключить полный экран для youtube api в android? Установите индикатор выполнения поверх RecylerView и удалите после загрузки данных.

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() .