片段和对话框片段之间的通信

我试图做一个Fragment显示使用DialogFragment API Dialog

我的对话框只有一个EditText视图,我想把它写回的string传回给Fragment

我能够显示从Fragment的对话框,但我无法从input字段检索string回到我的Fragment

我尝试了两种方法来创build一个对话框:覆盖DialogFragment.onCreateView方法,并编写整个对话框的视图,并覆盖DialogFragment.onCreateDialog并使用AlertDialog.Builder使编写button行为更容易。

有关将事件传递回对话框主机的对话框的 Android文档是关于主机始终是一个Activity而不是一个Fragment 。 我试图概括为我的情况下使用它的行为,但我不能。

我尝试使用DialogFragment.onAttachcallback来获取Activity引用,并使用FragmentDialogFrament之间的接口,它工作正常,但我不能从Activity检索Fragment ,使其工作。

有人可以帮助一个简单的例子吗?

提前致谢

Solutions Collecting From Web of "片段和对话框片段之间的通信"

你可以使用FragmentsetTargetFragmentgetTargetFragment方法。 您可以将您的Fragment设置为DialogFragment的目标,然后从DialogFragment检索对其的引用。

你可以使用callback。 只需在dialogfragment中实现一个“完成”button或类似的东西。

所以在你的dialogfragment做这样的事情:

 protected OnDialogClickedListener callback = null; public interface OnDialogClickedListener { public abstract void onDialogClicked(int position); } public void setOnDialogClickedListener(OnDialogClickedListener l){ callback = l; } button.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { callback.onDialogClicked(position); dismiss(); } }); 

在你的活动中做这样的事情:

 final YourFragment f = YourFragment .newInstance(0); f.show(ft, "YourFragment "); f.setOnDialogClickedListener(new OnDialogClickedListener() { @Override public void onDialogClicked(int position) { updateText(position); f.dismiss(); } });