使用AlertDialog(MultiChoice Checkboxes)会崩溃我的应用程序

时间:2012-01-01 21:24:08

标签: android android-widget

在SO上有一个类似的问题,但我认为我的问题出在其他地方,或者我在这里遗漏了一些相当重要的问题。

我的对话框中有一个唯一的ID集:static final int DAYS_DIALOG_ID = 1;

我还有一个类成员变量:private TextView textViewSelectDayOfWeek;

在我的覆盖方法onCreate()中,我有:

textViewSelectDayOfWeek = (TextView) findViewById(R.id.textViewSelectDayOfWeek);
textViewSelectDayOfWeek.setOnClickListener(this);

所以基本上,我在变量中的XML文件中定义我的TextView,并设置它的监听器。

在我的onClick(view v)中,有一个带有以下情况的开关应该处理应该处理打开我的对话框的TextView的点击(请注意上述开关使用v.getId()):

case R.id.textViewSelectDayOfWeek:
            showDialog(DAYS_DIALOG_ID);
            break;

我的覆盖方法onCreateDialog(int id)还包含一个使用提供的ID的switch语句。处理此特定问题导致对话框的情况如下:

case DAYS_DIALOG_ID:
            final CharSequence[] daysOfWeek = { "@string/stringMonday"}; // 7 days, skimming unimportant stuff
            return new AlertDialog.Builder(this)
            .setTitle("@string/stringSelectDayDialogTitle")
            .setMultiChoiceItems(daysOfWeek,
                                    new boolean[] {true, true, true, true, true}, // Sets first 5 days as checked by default
                                    new DialogInterface.OnMultiChoiceClickListener() {
                                                        public void onClick(DialogInterface dialog, int day, boolean isChecked) {
                                                            Toast.makeText(getApplicationContext(), daysOfWeek[day], Toast.LENGTH_SHORT).show();
                                                        }
                                   })
                                   .create();

现在,如果我点击带有ID textViewSelectDayOfWeek的TextView,我的应用程序崩溃了。

我在调用Toast之前尝试onClick() showDialog(DAYS_DIALOG_ID)中的邮件,并且在我的应用崩溃之前没有显示该消息。

我该怎么做才能解决这个问题?我相信我提到了我的代码的所有重要部分,但感到鼓励请求任何可能有用的东西。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我当然希望这有助于某人。

正如thinksteep所提到的,抛出的异常实际上非常有用:)

我有一个7周工作日的数组,我提供了一个不完整的数组,其中只包含5个布尔值,用于定义默认情况下是否检查日期,认为剩余的值将使用默认值初始化样。