2010-11-09 137 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())。