谷歌建议我们使用简单的 by usingDialogFragment代替简单Dialog的 by using Fragments API,但是DialogFragment对于简单的 Yes-No 确认消息框使用隔离是很荒谬的。在这种情况下,最佳做法是什么?
DialogFragment
Dialog
Fragments API
是的,使用DialogFragment并且onCreateDialog无论如何您都可以简单地使用 AlertDialog 构建器来创建一个简单AlertDialog的带有是/否确认按钮。根本没有太多代码。
onCreateDialog
AlertDialog
关于处理片段中的事件,有多种方法可以做到这一点,但我只是Handler在 my 中定义一条消息Fragment,通过它DialogFragment的构造函数将它传递给它,然后将消息传递回我的片段的处理程序,作为对各种点击事件的适当处理。再次以各种方式做到这一点,但以下对我有用。
Handler
Fragment
在对话框中保存一条消息并在构造函数中实例化它:
private Message okMessage; ... okMessage = handler.obtainMessage(MY_MSG_WHAT, MY_MSG_OK);
在您的对话框中实现onClickListener,然后根据需要调用处理程序:
onClickListener
public void onClick(..... if (which == DialogInterface.BUTTON_POSITIVE) { final Message toSend = Message.obtain(okMessage); toSend.sendToTarget(); } }
编辑
并且Message可以打包,您可以将其保存onSaveInstanceState并恢复
Message
onSaveInstanceState
outState.putParcelable("okMessage", okMessage);
然后在onCreate
onCreate
if (savedInstanceState != null) { okMessage = savedInstanceState.getParcelable("okMessage"); }