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

我试图做一个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 ,使其工作。

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

提前致谢

  • 如何从片段调用片段?
  • WebView不加载网页
  • 在选定的底部导航视图项上重新创建片段
  • Fragment.onCreateView具有空容器
  • 碎片相互重叠
  • 添加PlaceAutocompleteFragment片段抛出错误
  • 刷新当前片段(ListView数据)保留在同一活动中
  • 在我的应用中禁用多指触摸
  • 你可以使用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(); } });