Вызов метода из родительского фрагмента



Обычно из Activity я могу вызвать объект, который расширяет DialogFragment и реализует DialogInterface.OnClickListener().



Тогда, если бы я захотел, из этого Dialog, вызвать метод в родительской деятельности, я мог бы сделать ((NameOfParentActivity)getActivity()).nameOfMethod();



Но теперь я вызываю такой объект из Fragment (в частности, страницы ViewPager) вместо Activity.

Я не совсем уверен, что нужно изменить, чтобы заставить линию вызова метода работать. Другими словами, Я пытаюсь вызвать метод из класса Fragment, находясь внутри его DialogFragment Объект.



Edit: OnClick() код из моего класса Adapter:



public void onClick(View v) {
DeleteGameBoardDialogFragment dialogFragment = new DeleteGameBoardDialogFragment();
Bundle args = new Bundle();
args.putString(TabFragmentGameBoard.GAMEBOARD_DIALOG_TAG, mGameBoards.get(position).getGameBoardName());
dialogFragment.setArguments(args);
dialogFragment.show(((Activity) mContext).getFragmentManager(), "");
}
714   2  

2 ответов:

Вы можете решить вашу проблему с помощью setTargetFragment() и getParentFragment() для вашего диалогового фрагмента.

Вызовите диалог из вашегоViewPager fragment , где вы хотите выполнить метод fragment.

DeleteGameBoardDialogFragment dialogFragment = new DeleteGameBoardDialogFragment();
dialogFragment.setTargetFragment(this,1);
FragmentTransaction transaction=getChildFragmentManager().beginTransaction();//must be getChildFragmentManager()
dialogFragment.show(transaction, "df");

И внутри вашего DeleteGameBoardDialogFragment, вызовите ниже код

DeleteGameBoardDialogFragment  fragment=(DeleteGameBoardDialogFragment) getParentFragment();
fragment.nameOfMethod()

IMPT: убедитесь, что вы вызываете диалог только из фрагмента , а не из activity. Почему Если вы звоните из activity getParentFragment() возвращает null.

GetParentFragment (): возвращает Родительский фрагмент, содержащий этот фрагмент. Если этот фрагмент прикреплен непосредственно к действию, возвращает null.. подробнее посетите Итак: getParentFragment returning null

Из того, что я понял из вашего вопроса, у вас есть ViewPager, который открывает диалоговое окно при нажатии кнопки, и вы хотите получить доступ к методу из вашего ViewPager Fragment?

Если это ваш вопрос, можно также попробовать сделать Interface, который ведет себя как Listener и передать его на DialogFragment. Fragment, где находится ваш метод, должен реализовать этот слушатель.

Comments

    Ничего не найдено.