Проблема с AlertDialog - PullRequest
       13

Проблема с AlertDialog

2 голосов
/ 21 февраля 2010

У меня проблема с созданием AlertDialog.

Мне бы хотелось, чтобы AlertDialog появлялся, когда я нажимал на одну кнопку, поэтому я помещал весь код для создания диалога в прослушиватель этой кнопки ... тот же код работает вне этого прослушивателя, но внутри слушателя не работает ... не вызывает никаких ошибок, но когда я запускаю эмулятор, написано что-то об этом: «Приложение неожиданно прервано» ....

Это мой код для этого:

btsenddata.setOnClickListener(new Button.OnClickListener() { 

      public void onClick (View v){ 

        AlertDialog.Builder alt_bld = new AlertDialog.Builder(getApplicationContext() ); // I've tried with "activity1.this" instead "getApplicationContext()" but it is the same result
        alt_bld.setMessage("Do you want to close this window ?")
        .setCancelable(false)
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
        // Action for 'Yes' Button
        }
        })
        .setNegativeButton("No", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
        //  Action for 'NO' Button
        dialog.cancel();
        }
        });
        AlertDialog alert = alt_bld.create();
        // Title for AlertDialog
        alert.setTitle("Title");
        // Icon for AlertDialog
        alert.setIcon(R.drawable.icon);
        alert.show();
      }});
}

.... я слышал, что метод getApplicationContext () создает некоторые проблемы, но я попытался заменить его на activity.this, и он все равно не работает ... Если кто-то знает причину этого или более о alerttdialogs, умоляю ответить. Спасибо.

Ответы [ 3 ]

1 голос
/ 22 февраля 2010

«Приложение неожиданно прервано»

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

0 голосов
/ 04 мая 2011

как и в вашем коде, вы реализуете OnClickListener, который не является частью основного действия,

для обработки пользовательского интерфейса из любого слушателя, вам нужно создать обработчик.

public Handler mHandler = new Handler();

напишите код выше в объявлении члена,

mHandler.post(new Runnable() {
      public void run() {
            // your UI handling code
      }
});

напишите код выше в Слушателе. Это может решить вашу проблему.

0 голосов
/ 22 февраля 2010

Я запустил ваш код и использую MyActivity.this работает. И в большинстве случаев вам нужен контекст Activity. Смотрите это сообщение в блоге

Вы также можете попробовать с v.getContext()

AlertDialog.Builder alt_bld = new AlertDialog.Builder(v.getContext());

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