Не могу закрыть диалоговое окно в моем приложении для Android - PullRequest
2 голосов
/ 04 января 2012

У меня есть некоторый код здесь (мой класс активности и некоторый класс, который расширяет WebViewClient), поэтому в своей деятельности я делаю что-то вроде этого:

protected Dialog onCreateDialog(int id) {
    switch(id) {
        case 1:
            //logging vk dialog
            Log.d("OLOLOLO", "webview"); 
            dialog = new Dialog(this);
            dialog.setContentView(R.layout.webviewl);
            dialog.setTitle("loggin in");

            webview = (WebView) dialog.findViewById(R.id.vkWebView);
            webview.setWebViewClient(wvClforVK);  
            webview.loadUrl(url);
            // do the work to define the pause Dialog 
            break;
        case 2:
            // already logged vk dialog
            break;
        default:
            dialog = null;
    }
    return dialog;
}

и затем вызываю showDialog(1) для некоторых buttonclick listener.

В моем классе веб-просмотра в методе onPageFinished() мне нужно закрыть свой диалог, но я думаю, что это будет неправильно:

MyActivity activity = new MyActivity();  //my main activity object
activity.dismissDialog(1);

Это не работает:

01-03 20: 41: 10.758: E / AndroidRuntime (1172): java.lang.IllegalArgumentException: диалог с идентификатором 1 никогда не отображался через Activity # showDialog

Как я могу заставить мой объект активности правильно закрыть диалоговое окно?

Ответы [ 2 ]

3 голосов
/ 04 января 2012

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

1 голос
/ 04 января 2012

Как говорит исключение, вы пытаетесь закрыть диалоговое окно, которое не было показано перед использованием showDialog. Вам необходимо проверить жизненный цикл диалога. Вы можете использовать метод Dialog.isShowing(), чтобы подтвердить отображение диалогового окна перед его закрытием.

...