J'ai un problème avec Webview. Je suis en train de programmer ma propre classe WebChromeClient en remplaçant la méthode onProgressChanged, car je veux afficher la page quand le chargement est terminé et ensuite, pour masquer l'écran de démarrage. Comme je veux juste que cela arrive avec une URL spécifique, je compare l'URL WebView réelle avec une chaîne spécifique, mais il y a un problème, j'obtiens un pointeur nul quand la méthode webview.getUrl() est appelée et mon application se termine. Voici le code:WebView.getUrl() renvoie la valeur null
private class MyWebChromeClient extends WebChromeClient {
@Override
public void onProgressChanged (WebView webview, int newProgress) {
super.onProgressChanged(webview,newProgress);
if(webview.equals(w1) && newProgress == 100 && webview.getUrl().startsWith("https://ssl.facebook.com/login.php")) {
webview.setVisibility(WebView.VISIBLE);
ImageView imageview = (ImageView)findViewById(R.id.ivsplash);
imageview.setVisibility(ImageView.GONE);
ProgressBar progressbar = (ProgressBar)findViewById(R.id.pbsplash);
progressbar.setVisibility(ProgressBar.GONE);
}
}
}
Je fais cela pour éviter la WebView prend trois ou quatre secondes pour rendre la page, mais cela ne fonctionne pas. Le code je avant était:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url) {
super.shouldOverrideUrlLoading(webview, url);
webview.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView webview, String url) {
if(url.startsWith("https://ssl.facebook.com/login.php")) {
webview.setVisibility(WebView.VISIBLE);
ImageView imageview = (ImageView)findViewById(R.id.ivsplash);
imageview.setVisibility(ImageView.GONE);
ProgressBar progressbar = (ProgressBar)findViewById(R.id.pbsplash);
progressbar.setVisibility(ProgressBar.GONE);
}
}
}
Merci
Merci pour la réponse. Je l'ai essayé, mais lorsque je masque l'écran de démarrage, la vue Web reste vide trois ou quatre secondes jusqu'à ce que la page soit rendue. C'est ce que je veux réparer et je ne sais pas comment éviter cela. J'ai modifié ma question avec le code que j'ai utilisé. – Adrian
J'ai mis à jour mon code de projet. Veuillez noter que certaines méthodes de remplacement d'url sont également appelées pour d'autres éléments comme les images, css. – Pentium10
La solution que vous m'avez donnée est bonne bien qu'il existe quelques scintillements car il y a des redirections de page et onPageFinished est appelé deux ou trois fois, donc le webview est affiché mais OnLoadResource le cache à nouveau jusqu'à ce que la dernière page soit chargée. Comme je l'ai dit, la solution fonctionne très bien, mais j'aimerais régler ce problème. Merci pour tous. – Adrian