谷歌建议我们使用DialogFragment
,而不是用Fragments API
来表示简单的Dialog
,但用DialogFragment
来表示简单的是非确认消息框是荒谬的.在这种情况下,最佳做法是什么?
谷歌建议我们使用DialogFragment
,而不是用Fragments API
来表示简单的Dialog
,但用DialogFragment
来表示简单的是非确认消息框是荒谬的.在这种情况下,最佳做法是什么?
是的,使用DialogFragment
,而在onCreateDialog
中,你可以简单地使用AlertDialog builder创建一个带有Yes/No确认按钮的简单AlertDialog
.没有太多的代码.
关于处理片段中的事件,有各种各样的方法,但我只是在我的Fragment
中定义了一个消息Handler
,通过它的构造函数将其传递到DialogFragment
,然后将消息作为各种点击事件的适当方式传递回片段的处理程序.同样,有各种各样的方法可以做到这一点,但下面的方法对我来说很有效.
在对话框中保存一条消息并在构造函数中实例化:
private Message okMessage;
...
okMessage = handler.obtainMessage(MY_MSG_WHAT, MY_MSG_OK);
在对话框中实现onClickListener
,然后根据需要调用处理程序:
public void onClick(.....
if (which == DialogInterface.BUTTON_POSITIVE) {
final Message toSend = Message.obtain(okMessage);
toSend.sendToTarget();
}
}
Edit
由于Message
是可包裹的,所以你可以在onSaveInstanceState
中保存并恢复它
outState.putParcelable("okMessage", okMessage);
然后在onCreate
if (savedInstanceState != null) {
okMessage = savedInstanceState.getParcelable("okMessage");
}