Jos*_*ura 17 android android-fragments android-alertdialog
我正在尝试制作Fragment
一个Dialog
使用DialogFragment
API.
我的对话框只有一个EditText
视图,我想将写入的字符串传回给它Fragment
.
我能够从中显示对话框Fragment
,但是我无法从输入字段中检索字符串回到我的Fragment
.
我尝试了两种方法来创建一个对话框:覆盖DialogFragment.onCreateView
方法并编写整个对话框的视图并覆盖DialogFragment.onCreateDialog
并使用AlertDialog.Builder
它来更容易编写按钮行为.
关于将事件传递回对话框主机的对话框的 Android文档是关于主机始终是一个Activity
永远不是a Fragment
.我试图概括在我的情况下使用它的行为,但我不能.
我尝试使用DialogFragment.onAttach
回调以获取Activity
参考和使用之间的接口Fragment
以及DialogFrament
和它工作正常,但我不能检索Fragment
从Activity
使它工作.
有人可以帮忙举个简短的例子吗?
提前致谢
小智 43
你可以使用setTargetFragment
和getTargetFragment
方法Fragment
.您可以将自己设置Fragment
为目标,DialogFragment
然后从中检索对它的引用DialogFragment
.
你可以使用回调.只需在对话框中实现一个"完成"按钮或类似的东西.
所以在你的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();
}
});
Run Code Online (Sandbox Code Playgroud)
在你的活动中做这样的事情:
final YourFragment f = YourFragment .newInstance(0);
f.show(ft, "YourFragment ");
f.setOnDialogClickedListener(new OnDialogClickedListener() {
@Override
public void onDialogClicked(int position) {
updateText(position);
f.dismiss();
}
});
Run Code Online (Sandbox Code Playgroud)