Вызов метода из родительского фрагмента
Обычно из 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(), "");
}
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