从DialogFragment接收结果我正在使用DialogFragments做很多事情:从列表中选择项目,输入文本。将值(即字符串或列表中的项)返回给调用活动/片段的最佳方法是什么?目前我正在制作调用活动实现DismissListener,并为DialogFragment提供对活动的引用。然后,Dialog调用OnDimissactivity中的方法,activity将从DialogFragment对象中获取结果。非常混乱,因为DialogFragment失去对活动的引用,它不能用于配置更改(方向更改)。谢谢你的帮助。
3 回答
MM们
TA贡献1886条经验 获得超2个赞
在你DialogFragment添加一个接口监听器,如:
public interface EditNameDialogListener {
void onFinishEditDialog(String inputText);}然后,添加对该侦听器的引用:
private EditNameDialogListener listener;
这将用于“激活”侦听器方法,并检查父Activity / Fragment是否实现此接口(请参阅下文)。
在Activity/ FragmentActivity/ Fragment说:“所谓的” DialogFragment简单地实现这个接口。
在DialogFragment你需要添加的所有内容中,你想要解除DialogFragment并返回结果是:
listener.onFinishEditDialog(mEditText.getText().toString());this.dismiss();
哪里mEditText.getText().toString()是什么将被传递回调用Activity。
请注意,如果要返回其他内容,只需更改侦听器所使用的参数即可。
最后,您应该检查接口是否实际由父活动/片段实现:
@Overridepublic void onAttach(Context context) {
super.onAttach(context);
// Verify that the host activity implements the callback interface
try {
// Instantiate the EditNameDialogListener so we can send events to the host
listener = (EditNameDialogListener) context;
} catch (ClassCastException e) {
// The activity doesn't implement the interface, throw exception
throw new ClassCastException(context.toString()
+ " must implement EditNameDialogListener");
}}这种技术非常灵活,即使您还没有想要解除对话框,也可以回调结果。
- 3 回答
- 0 关注
- 967 浏览
添加回答
举报
0/150
提交
取消
