2011-12-30 88 views
0

我想在我的android应用程序中将webview制作为对话框,并在加载需要的网页时将其关闭。对话框会在按钮单击活动时打开,如果刚打开后(在活动中)关闭对话框,它就会工作,但在我的WebViewClient中它总是崩溃。对话框创建:如何从WebView类中关闭包含WebView的对话框

@Override 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case 1: 
      dialog = new Dialog(this); 
      dialog.setContentView(R.layout.webviewl); 
      dialog.setCanceledOnTouchOutside(false); 
      webview = (WebView) dialog.findViewById(R.id.vkWebView); 
      webview.setWebViewClient(wvClforVK); 
      webview.loadUrl(url); 
     webview.requestFocus(View.FOCUS_DOWN); 
     return dialog; 
     default: 
     return super.onCreateDialog(id); 
      } 
    } 
    public void showVKDialog(){ 
     dialog = new Dialog(this); 
     dialog.setContentView(R.layout.webviewl); 
     dialog.setCanceledOnTouchOutside(false); 
     webview = (WebView) dialog.findViewById(R.id.vkWebView); 
     webview.setWebViewClient(wvClforVK); 
     webview.loadUrl(url); 
     dialog.show(); 
    } 
public void dismissDialog(){ 
     dialog.dismiss(); 
    } 

打开按钮

showDialog(1); 

在WebViewClass:

//code 
    @Override 
      public void onPageFinished (WebView webview, String url){ 
     //lalala some kind of my perfect code.... :) 

Activity myActivity = new Activity(); 
      myActivity.dismissDialog(); 

Web视图布局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <WebView 
     android:id="@+id/vkWebView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     /> 
</LinearLayout> 

回答

0
 Activity myActivity = new Activity(); 
    myActivity.dismissDialog(); 

你不能简单地实例化一个新的Activity并调用dissmissDialog();在上面。您必须在您用来打开对话框的Activity实例上调用它。所以我想你必须将Activity传递到你的WebView类中并在其上调用dissmissDialog()。