从父片段调用方法

时间:2016-03-30 01:23:39

标签: java android android-fragments android-activity dialog

通常,从Activity我可以调用扩展DialogFragment并实现DialogInterface.OnClickListener()的对象。

然后,如果我想,从那个Dialog调用父活动中的方法,我可以((NameOfParentActivity)getActivity()).nameOfMethod();

但是现在我从Fragment(特别是ViewPager的页面)而不是Activity调用这样的对象。

我不确定要改变什么来让方法调用行工作。换句话说,我试图在Fragment类中调用DialogFragment类中的方法。

编辑: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 个答案:

答案 0 :(得分:3)

您可以使用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():返回包含此Fragment的父Fragment。如果此片段直接附加到活动,则返回null ..更多访问SO : getParentFragment returning null

答案 1 :(得分:0)

根据我对您的问题的理解,您有一个ViewPager,在点击按钮时会打开一个对话框,并且您想要从ViewPager Fragment访问某个方法?

如果这是您的问题,请尝试制作行为与Interface相似的Listener并将其传递给DialogFragment。您的方法所在的Fragment应该实现此侦听器。