【问题标题】:Can i have 2 Dialogs in the same "onCreateDialog"?我可以在同一个“onCreateDialog”中有 2 个对话框吗?
【发布时间】:2012-08-29 18:55:10
【问题描述】:

我设置了一个 onCreateDialog,我需要放置 2 个对话框(Datepicker 和 Timepicker),但是当我将它们都放在 onCreateDialog 中时,它只会打开第一个是 Datepicker。

代码:

    @Override
protected Dialog onCreateDialog(int id) {
    //date picker
            switch (id) {
                case DATE_DIALOG_ID:
               // set date picker as current date
                    return new DatePickerDialog(this, datePickerListener, year, month,day);
                }
            //time picker
            switch (id) {
                case TIME_DIALOG_ID:
                    //set time picker as current time
                    return new TimePickerDialog(this, timePickerListener, hour, minute,false);
                    }
            return null;
}

【问题讨论】:

  • 显示调用者相关代码

标签: android eclipse datepicker timepicker


【解决方案1】:

是的,您可以,但您的switch 无效。 switch 的正确语法是:

switch( variable ) {
  case value1:
      ...
      break;
  case value X:
      ...
      break;
}

以及可选的default 来捕获您没有明确的case 的所有其他值。你有两个没用的开关。你正确的代码是:

AlertDialog myDialog = null;

switch (id) {
  case DATE_DIALOG_ID:
    // set date picker as current date
    myDialog = new DatePickerDialog(this, datePickerListener, year, month,day);
    break;

  case TIME_DIALOG_ID:
    //set time picker as current time
    myDialog = new TimePickerDialog(this, timePickerListener, hour, minute,false);
    break;

}

return myDialog;

您的 ID 也必须是唯一的,但是一旦您修复了 switch,如果您将其设置为相同的值,编译器将显示错误(因为对于给定的值,您不能有多个 case)。

public static final int TIME_DIALOG_ID = 1;
public static final int DATE_DIALOG_ID = 2;

编辑:我再次修改了这一点,因为我个人不喜欢该方法的多个退出点 - 你有很多 return

【讨论】:

  • 你能告诉我完整的代码吗?我对此真的很陌生,我在这里尝试了一些东西,但是很好,没有奏效,只是出现了很多错误
  • 在“case DATE_DIALOG_ID”和“case TIME_DIALOG_ID”上表示重复的情况
  • 所以这是你真正的罪魁祸首。我怀疑您将它们都分配了相同的值(即1)。它必须不同。所以如果DATE_DIALOG_ID1 然后将TIME_DIALOG_ID 设置为2 就完成了。
  • 好的,但是我如何以及在哪里更改值?
  • 查看编辑。只需在您的代码中找到您定义它们的位置并按照我的代码进行调整。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多