2016-03-30 5 views
3

Как правило, из 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(), ""); 
} 

ответ

1

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

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

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: убедитесь, что вы вызываете диалог с фрагмента только, а не от деятельности. Почему Если вы позвоните от деятельности getParentFragment()null.

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

Happy_Coding;

0

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

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