2010-11-09 97 views
0
WebView webView = new WebView(this);   
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7"); 
    webView.setWebViewClient(new HelloWebViewClient()); 
    ProgressDialog dialog = ProgressDialog.show(this, "", 
        "Loading. Please wait...", true); 
    setContentView(webView); 
    webView.loadUrl("http://www.preisjaeger.at"); 
    dialog.cancel(); 

爲什麼ProgressDialog不顯示?ProgressDialog不顯示

回答

1

CommonsWare是正確的問題。更具體地說,您將內容加載到WebView中的調用異步發生(這很好 - 它不會在頁面加載時鎖定UI)。因此,您的dialog-cancel調用運行時無需等待WebView的loadUrl實際完成其網絡調用(這發生在另一個線程中)。你可能想要做的是在頁面完成加載並且後臺線程返回後關閉加載器;對於如何做到這一點看到WebView documentation第二個例子爲例,看看如何瑟一的WebView chromeclient與onProgressChanged電話:

// Let's display the progress in the activity title bar, like the 
// browser app does. 
getWindow().requestFeature(Window.FEATURE_PROGRESS); 

webview.getSettings().setJavaScriptEnabled(true); 

final Activity activity = this; 
webview.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) { 
    // Activities and WebViews measure progress with different scales. 
    // The progress meter will automatically disappear when we reach 100% 
    activity.setProgress(progress * 1000); 
    } 
}); 
webview.setWebViewClient(new WebViewClient() { 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
    Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); 
    } 
}); 

webview.loadUrl("http://slashdot.org/"); 
+0

這個代碼把我的電話給FREEZ:我使用的代碼的http:// codeviewer .org/view/code:13b9 – user422039 2010-11-09 13:57:35

+0

凍結或崩潰?有沒有回溯?你也正在創建一個新的WebView,但你似乎並沒有將它綁定到你的佈局,所以你什麼也看不到。您應該從layout layout XML中findViewById-WebView,或者創建WebView並在事實之後將其附加到您的根佈局。 – 2010-11-09 15:48:43

+0

我想讓它沒有xml .. – user422039 2010-11-10 20:23:22

2

您在它出現之前取消了它。 ProgressDialog.show()甚至不會開始做任何事情,直到你從任何回調你回來(例如,onCreate())。