小编典典

Android DialogFragment vs Dialog

all

谷歌建议我们使用简单的 by usingDialogFragment代替简单Dialog的 by using Fragments API,但是DialogFragment对于简单的 Yes-No 确认消息框使用隔离是很荒谬的。在这种情况下,最佳做法是什么?


阅读 81

收藏
2022-05-13

共1个答案

小编典典

是的,使用DialogFragment并且onCreateDialog无论如何您都可以简单地使用 AlertDialog
构建器来创建一个简单AlertDialog的带有是/否确认按钮。根本没有太多代码。

关于处理片段中的事件,有多种方法可以做到这一点,但我只是Handler在 my
中定义一条消息Fragment,通过它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();
    }
 }

编辑

并且Message可以打包,您可以将其保存onSaveInstanceState并恢复

outState.putParcelable("okMessage", okMessage);

然后在onCreate

if (savedInstanceState != null) {
    okMessage = savedInstanceState.getParcelable("okMessage");
}
2022-05-13