У меня проблема с Webview. Я программирую свой собственный класс WebChromeClient, переопределяющий метод onProgressChanged, потому что я хочу показать страницу, когда она заканчивает загрузку, а затем скрыть заставку. Поскольку я просто хочу, чтобы это происходило с определенным URL-адресом, я сравниваю фактический URL-адрес WebView с конкретной строкой, но есть проблема, я получаю нулевой указатель, когда вызывается метод webview.getUrl () и мое приложение завершается.
Это код:
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);
}
}
}
Я делаю это, чтобы веб-просмотр не отображал страницы три-четыре секунды, но он не работает. Код, который я использовал раньше, был:
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);
}
}
}
Спасибо