2011-12-30 4 views
0

私はアンドロイドアプリでダイアログとしてwebviewを作成し、必要なWebページを読み込むときに閉じようとしています。アクティビティのボタンをクリックするとダイアログが開き、開かれた直後(アクティビティ内)のダイアログがあれば機能しますが、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(); 
    } 

ボタンWebViewClassで

showDialog(1); 

にオープン:

//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(); 

新しいアクティビティをインスタンス化してdissmissDialog()を呼び出すことはできません。その上に。ダイアログを開くときに使用したアクティビティインスタンスで呼び出す必要があります。だから私はあなたのWebViewクラスにアクティビティを渡し、それにdissmissDialog()を呼び出さなければならないと思います。

関連する問題