Google 建议我们通过 Fragments API
使用 DialogFragment
而不是简单的 Dialog
,但是使用孤立的 是很荒谬的>DialogFragment
用于一个简单的 Yes-No 确认消息框。在这种情况下,最佳做法是什么?
最佳答案
是的,使用 DialogFragment
并且在 onCreateDialog
中你可以简单地使用 AlertDialog 构建器来创建一个简单的 AlertDialog
带有是/否确认按钮.根本没有太多代码。
关于处理 fragment 中的事件,有多种方法可以做到,但我只是在我的 Fragment
中定义一个消息 Handler
,将其传递到 DialogFragment
通过其构造函数,然后将消息传递回我的 fragment 的处理程序,作为对各种单击事件的适当处理。同样有多种方法可以做到这一点,但以下方法对我有用。
在对话框中保存一条消息并在构造函数中实例化它:
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();
}
}
编辑
由于 Message
是可打包的,您可以将其保存在 onSaveInstanceState
中并恢复它
outState.putParcelable("okMessage", okMessage);
然后在onCreate
if (savedInstanceState != null) {
okMessage = savedInstanceState.getParcelable("okMessage");
}
关于Android DialogFragment vs Dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7977392/