Отображение диалога за другим диалогом: HANGS - PullRequest
0 голосов
/ 02 сентября 2010

У меня действительно странная проблема, которую я пока не могу отладить ... Дело в том ... что моему приложению нужно что-то загрузить для работы.Поэтому в начале метода onCreate () я проверяю, загружено ли это что-то.Если нет, я выскакиваю диалоговое окно с просьбой загрузить его.

if (!isInstalled) {
            showDialog(DIALOG_INSTALL);
        } else {
            start();
        }

Где метод start () выполняет какое-то другое действие.Теперь этот showDialog вызывает это:

builder = new AlertDialog.Builder(MyApp.this);
        builder.setMessage("Would you like to install...")
        .setCancelable(false)
        .setPositiveButton("Install", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.dismiss();
                aManager.install(MyApp.this);
            }
        });
        dialog = builder.create();
        return dialog;

Мой диалог отображается, и я нажимаю, поэтому вызывается aManager.install ().Я передаю контекст, потому что aManager.install () выскакивает ProgressDialog, чтобы показать прогресс загрузки и порождает новый поток, в котором все загружается.Поэтому, очевидно, перед созданием моего диалога я создаю обработчик для получения ответа от этого aManager.install ().И ответ МОЖЕТ варьироваться, потому что, например, интернет-соединение недоступно (Возникло и ловится исключение, а слушатель вызывается с другим кодом).

Теперь, когда это произойдет (Исключение), я хотел бы вызвать другой диалогговоря "что-то пошло не так, вы хотите повторить попытку?" ... так что еще один вызов showDialog (DIALOG_REINSTALL) (на этот раз с другим кодом).Дело в том, что ... вызывается showDialog () (я могу это проверить, войдя в систему), но диалоги не отображаются.Вместо этого мое приложение просто виснет!?!?!?

Кто-нибудь знает, почему он это делает?Никаких исключений, абсолютно ничего от logcat, я не могу сказать, ГДЕ он зависает ... просто вижу, что метод вызывается и должен отображаться диалог ...

Большое спасибо !!

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Похоже, у вас тупик.Я бы поместил код загрузки в отдельный поток, например, используйте AsyncTasktask.onPreExecute() вы можете закрыть 1-е диалоговое окно и открыть диалоговое окно прогресса, которое вы обновляете, переписав task.onProgressUpdate()

0 голосов
/ 07 ноября 2010

Используйте .show() вместо .create().

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