2010-11-09 3 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(); 

Pourquoi le ProgressDialog n'apparaît pas?ProgressDialog n'apparaît pas

Répondre

1

CommonsWare a raison à propos du problème. Plus spécifiquement, votre appel pour charger du contenu dans WebView se produit de manière asynchrone (ce qui est bien - il ne verrouille pas l'interface utilisateur pendant le chargement de votre page). Par conséquent, votre appel dialog-cancel s'exécute sans attendre que loadUrl de WebView termine réellement son appel réseau (ce qui se passe dans un autre thread). Ce que vous voulez probablement faire est de rejeter le chargeur après le chargement de la page et le retour du fil d'arrière-plan; pour un exemple de la façon de faire voir le second exemple dans le WebView documentation pour voir comment SE le chromeclient de WebView avec un appel 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

ce code apporter mon téléphone à Freez: Mon code utilisé http: // codeviewer .org/view/code: 13b9 – user422039

+0

Gel ou crash? Et y a-t-il une traceback? Vous créez également un nouveau WebView mais vous ne semblez pas le lier à votre mise en page n'importe où, donc vous ne verrez rien. Vous devriez soit findViewById-un WebView à partir de votre XML de mise en page, soit créer votre WebView et l'attacher à votre mise en page racine après le fait. –

+0

je veux le faire sans le xml .. – user422039

2

Vous l'avez annulé avant même qu'il apparaisse. ProgressDialog.show() ne commencera même pas pour faire quoi que ce soit jusqu'à après vous revenez de tout rappel dans lequel vous vous trouvez (par exemple, onCreate()).

Questions connexes