2012-01-03 52 views
2

我這裏有一些代碼(我的活動類和一些類,擴展WebViewClient) 所以,在我的活動我做這樣的事情:不能關閉該對話框在我的Android應用

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; 
} 

和然後在某些buttonclick偵聽器上調用showDialog(1)

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

我怎樣才能讓我的活動對象正確關閉對話框?

+2

我很高興看到我不是唯一一個像OLOLOLO' – MrZander 2012-01-03 21:58:16

回答

3

問題是你實例化一個沒有任何對話框的新活動。您必須在創建對話框的同一活動實例上調用dismissDialog方法。如果你在另一個班級中調用它,你必須以某種方式將你的活動傳遞給該班級(例如,你可以將其作爲參數傳遞給它)。無論如何,不​​建議以這種方式實例化活動,如果您在項目的清單文件中定義它們,它們會自動實例化。

+0

這樣的東西來垃圾郵件的日誌,所以請告訴我,當webview中的頁面已經加載時,如何銷燬我的對話框? – user1128677 2012-01-03 21:28:53

+0

請將您的活動全部發送給我。我想看看你的onPageFinished方法。 – strongmayer 2012-01-04 07:36:46

+0

你必須寫是這樣的:)webView.setWebViewClient(新WebViewClient({ \t \t \t @覆蓋 \t \t \t公共無效onPageFinished(的WebView視圖,字符串URL){\t \t \t \t \t \t \t超。 onPageFinished(視圖,URL); \t \t \t \t YourActivity.this.dismissDialog(YOUR_DIALOG_ID); \t \t \t} \t \t \t \t \t}); – strongmayer 2012-01-04 07:46:11

1

如例外情況所述,您正嘗試解除在使用showDialog之前未顯示的對話框。您需要檢查對話框的生命週期。您可以使用Dialog.isShowing()方法來確認在解除對話框之前顯示的對話框。

+0

我做到了,我知道,我的對話框顯示在解僱之前..在活動對象的問題...我不能得到它correclty – user1128677 2012-01-03 21:45:30

+0

是MyActivity新的活動?如果你在同一個活動中運行showDialog dismissDialog(1)會很滿意(你不需要activity.dismissDialog(1))。如果沒有使用context = dialog.getContext()然後context.dismiss對話框(1) – 2012-01-03 21:54:34

+0

我試過了...但它沒有在Context對象中的dismissDialog()方法 – user1128677 2012-01-03 23:35:20