从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 关注
- 707 浏览
添加回答
举报
0/150
提交
取消