Сложность отображения диалогового окна с предупреждением. Почему этот код принудительно закрывает мое приложение? - PullRequest
2 голосов
/ 18 июля 2010

Я очень плохо знаком с Android, поэтому я работал в основном с информацией со страницы разработчика Android.Все шло отлично, пока я не добавил код из раздела диалога с предупреждениями.Один только код, который они дают, выдает ошибку, когда я пытаюсь запустить его в последней строке, говоря, что я должен инициализировать диалог, но я чувствую, что получаю исключение NullPointerException, независимо от того, что происходит ... Вот мой код:

protected Dialog onCreateDialog(int id) {
        Dialog dialog = null;
        switch(id) {
        case NAME_MISSING_ID:
            // do the work to define the Dialog
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Proceed without a name?")
                   .setCancelable(false)
                   .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            MainActivity.this.finish();
                       }
                   })
                   .setNegativeButton("No", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                       }
                   });
            AlertDialog alert = builder.create();
            break;
        case HARD_SELECTION_ID:
            // do the work to define the Dialog
            AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
            builder2.setMessage("This is INSANE! Are you sure?")
                   .setCancelable(false)
                   .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            MainActivity.this.finish();
                       }
                   })
                   .setNegativeButton("No", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                       }
                   });
            AlertDialog alert2 = builder2.create();
            break;
        default:
            dialog = null;
        }
        return dialog;
    }

Если я не создаю вначале диалоговое окно с пустым значением, я не могу запустить программу.Я даже пока не пытаюсь сделать что-нибудь сумасшедшее, любая помощь будет отличной, потому что у меня много проблем, когда я пытаюсь понять, что именно этот код пытается сделать.

Спасибо, ребята!

Ответы [ 2 ]

1 голос
/ 18 июля 2010

Проблема в том, что вы не возвращаете диалоговое окно ... createDialog всегда возвращает ноль.

вместо AlertDialog alert = builder.create(); вам следует

return builder.create();

в обоих случаях, очевидно.

1 голос
/ 18 июля 2010

Вы возвращаете ноль во всех случаях - смотрите переменную диалога, ей никогда не присваивается значение.

Возможно, вы захотите изменить эти строки:
AlertDialog alert = builder.create();
AlertDialog alert2 = builder2.create();

на это:
dialog = builder.create();
dialog = builder2.create();

А лучше дайте нам полный след стека в следующий раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...