Отображение диалога из метода run ()

1

Я пытаюсь вскрыть диалог из метода run, он дает мне исключение, которое Looper.prepare не вызывается, когда я вызываю тот же метод, я не получаю никакого исключения, но на консоли не отображается всплывающее диалоговое окно. Поскольку я использовал обработчик таким образом,

handler = new Handler() {
    public void handleMessage(Message msg) {
        showDialog(DIALOG1_KEY);
        // process incoming messages here
    }
};

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

Теги:

1 ответ

3
Лучший ответ

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

Что вам нужно сделать, это инициализировать новый объект Handler на них основной поток, например, определив его как полевую переменную.

private Handler handler = new Handler();

Затем создайте новый Runnable, который включает инструкции, которые вы хотите выполнить в потоке GUI (но который будет вызываться из вашего метода фона run).

private Runnable runOnGUI = new Runnable() {
  private void run() {
    showDialog(DIALOG1_KEY);
  }
};

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

private Runnable runInBackground = new Runnable() {
  private void run() {
    handler.post(runOnGUI);
    // Do processing
  }
};
  • 4
    Вы также можете использовать метод runOnUiThread (Runnable), доступный с Android 1.1 - он делает то же самое, но с примерно на 1 строку кода меньше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню