当前位置: 代码迷 >> Android >> 如何链接(立即重用)同一对话框
  详细解决方案

如何链接(立即重用)同一对话框

热度:59   发布时间:2023-08-04 10:58:30.0

我正在尝试使用一个有用的对话框系统来创建程序的简介。 我不想一次给用户增加过多的文本,因此我想将对话框分成几部分。 当然,每个部分都会有自己的信息。

我使用一个单独的静态类来处理消息传递和流逻辑。 而且工作正常。 我实际上还使用了3个对话框。 一个用于第一个消息(因为您无法返回),一个用于中间消息,一个用于最终消息(因为您无法前进)。 我可以毫无问题地从第一条消息中调用中间消息。 我也可以返回第一个消息。 但是,当我尝试从中间消息对话框重新显示中间消息时,不会出现新对话框。

示例:假设我有4条消息,因此中间消息将需要出现两次:

  1. 出现第一条消息:用户单击下一步
  2. 出现中间消息:用户单击上一个
  3. 出现第一条消息:用户单击下一步
  4. 出现中间消息:用户单击下一步
  5. 出现中间消息:用户单击下一步
  6. 出现最终消息

问题是在第5步上没有对话框。我正在使用onPrepareDialog在使用对话框时重新初始化它们。 现在,它基本上是onCreateDialog的克隆,其中开关中的每种情况都调用适合该对话框的builder方法。

这是我的中间对话框方法的代码。 (其他两个大致相同。您可以由此推测它们的外观。)

protected AlertDialog buildMiddleNoticeDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder
        .setTitle(Notice.getTitle())
        .setMessage(Notice.getMessage())
        .setCancelable(false)
        .setNegativeButton(resources.getString(R.string.notice_next_button),
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    showDialog(Notice.next());
                }
            })
        .setPositiveButton(resources.getString(R.string.notice_previous_button),
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    showDialog(Notice.previous());
                }
            });
    return builder.create();
}

我使用了一个内部带有TextSwitcher和两个按钮的常规对话框,以前进或后退。 TextSwitcher只需更改文本,就可以使用一些动画来更改文本。 试试看! 这两个按钮的功能仅取决于我的字符串数组中所有消息存储在有序位置的位置。

那就是我的活动,该活动以对话主题开始: :

  相关解决方案