Can';t关闭我的Android应用程序中的对话框

Can';t关闭我的Android应用程序中的对话框,android,dialog,webview,dismiss,Android,Dialog,Webview,Dismiss,我这里有一些代码(我的活动类和一些扩展WebViewClient的类) 所以,在我的活动中,我做了如下事情: protected Dialog onCreateDialog(int id) { switch(id) { case 1: //logging vk dialog Log.d("OLOLOLO", "webview"); dialog = new Dialog(this);

我这里有一些代码(我的活动类和一些扩展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)
,单击
listener

onPageFinished()
方法中的webview类中,我需要关闭对话框,但我认为这样做是不正确的:

MyActivity activity = new MyActivity();  //my main activity object
activity.dismissDialog(1);
它不起作用:

01-03 20:41:10.758:E/AndroidRuntime(1172):java.lang.IllegalArgumentException:从未通过“活动”显示id为1的对话框#showDialog


如何使我的活动对象正确地关闭对话框?

问题在于,您实例化了一个没有对话框的新活动。您必须在创建对话框的同一活动实例上调用dismissDialog方法。如果在另一个类中调用它,则必须以某种方式将活动传递给该类(例如,可以将其作为参数传递)。无论如何,不建议以这种方式实例化活动,如果您在项目的清单文件中定义了活动,它们将自动实例化。

正如例外情况所述,您试图取消使用showDialog之前未显示的对话框。您需要检查对话框的生命周期。您可以使用
Dialog.isShowing()
方法确认对话框是否显示,然后再取消它。

因此,请告诉我,当webview中的页面已加载时,如何销毁对话框?请将活动的整个类别发送给我。我想看看你的onPageFinished方法。你必须这样写:webView.setWebViewClient(新WebViewClient(){@Override public void onPageFinished(webView视图,字符串url){super.onPageFinished(视图,url);YourActivity.this.dismissDialog(你的对话框ID);});我有两个类…第一个是我的活动,第二个是带有onPageFinished()方法的webview客户端。所以,在我的活动中,我创建了一个对话框,即带有客户端的webview,并将它放到dialog(by dialog.setContentView)中,然后需要在onPageFinished()方法中对其进行解析。YourActivity.this.dismissDialog不起作用,“无封闭实例blabla”((在webview客户端类的构造函数中,您可以将参数与活动一起传递。然后将此活动保存在一个字段中,并在该字段上调用dismise方法。如果不清楚,请将这两个类发送给我,我可以更准确地为您提供解决方案。我这样做了,并且我知道,我的对话框显示在dismission之前。。活动中的问题对象…我无法正确获取它MyActivity是新活动吗?如果您在同一活动中运行showDialog dismissDialog(1)将失效(您不需要Activity.dismissDialog(1))。如果不使用context=dialog.getContext()然后使用context.dismiss dialog(1)我尝试了它…但它不是dismissDialog()方法在上下文中object我很高兴看到,我不是唯一一个在日志中滥发“ololo”之类内容的人