2016-03-30 35 views
3

通常、Activityから、DialogFragmentを拡張し、DialogInterface.OnClickListener()を実装するオブジェクトを呼び出すことができます。親フラグメントからメソッドを呼び出す

私は、そのDialogから、親アクティビティのメソッドを呼び出すしたい場合はその後、私は((NameOfParentActivity)getActivity()).nameOfMethod();

を行うことができます。しかし、今、私は(ViewPagerの具体的には、ページ)Fragmentからそのようなオブジェクトを呼び出していますActivityの代わりに

私は、メソッド呼び出し元の行を動作させるために何を変更するべきか正確には分かりません。言い換えれば、私はFragmentクラスからメソッドを呼び出そうとしていますが、その間にはDialogFragmentオブジェクトがあります。

編集:私のAdapterクラスからOnClick()コード:

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()で問題をダイアログFragmentに解決できます。

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():このFragmentを含む親Fragmentを返します。このフラグメントがアクティビティに直接添付されている場合、nullを返します。SO : getParentFragment returning null

Happy_Coding;

0

私はあなたの質問から理解するものから、あなたはボタンがクリックされたときにダイアログが表示されますViewPagerを持って、そしてあなたからメソッドにアクセスすることを望んでいましたあなたのViewPager Fragment

ご質問の場合は、Listenerのように動作するInterfaceを作成し、DialogFragmentに渡してください。メソッドがあるFragmentは、このリスナーを実装する必要があります。

関連する問題