Я собираюсь предвосхитить это, говоря, что я абсолютный новичок в кодировании чего-либо в Android (я в основном учусь, как делать все через вас, классные парни и девушки в Stack Overflow :)). Я делаю приложение, которое является просто компонентом WebView, и я хочу, чтобы оно определяло, когда была нажата ссылка на этой странице WebView, получало URL этой ссылки, а затем перенаправляло пользователя на другую ссылку, если исходная ссылка имеетопределенная строка в нем. Наконец, WebView должен быть перезагружен либо с исходной ссылкой, либо с перенаправленной ссылкой.
Вот мой код для java-части приложения, где, как мне кажется, происходит ошибка:
public class Grades extends AppCompatActivity {
private WebView webview;
String ShowOrHideWebViewInitialUse = "show";
private ProgressBar spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grades);
webview =(WebView)findViewById(R.id.webView);
spinner = (ProgressBar)findViewById(R.id.progressBar1);
webview.setWebViewClient(new CustomWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
webview.loadUrl("myurl.com");
}
// This allows for a splash screen
// (and hide elements once the page loads)
private class CustomWebViewClient extends WebViewClient {
@Override
public void onPageStarted(WebView webview, String url, Bitmap favicon) {
// only make it invisible the FIRST time the app is run
if (ShowOrHideWebViewInitialUse.equals("show")) {
webview.setVisibility(webview.INVISIBLE);
}
}
@Override
public void onPageFinished(WebView view, String url) {
spinner.setVisibility(View.GONE);
ShowOrHideWebViewInitialUse = "hide";
view.setVisibility(webview.VISIBLE);
super.onPageFinished(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("/courses/")) {
url = url + "/grades"
WebView.loadUrl(url);
return false;
} else {
WebView.loadUrl(url)
}
}
}
}
Я выполнил некоторые действия по устранению неполадок и добавил код, который заставил приложение отобразить URL в logcatв последнем @override. Проблема заключалась в том, что WebView не загружал страницу, вместо этого в logcat была просто бесконечная петля, печатающая URL-адрес текущей страницы для WebView, а не URL-адрес * 1008. * ссылка . Поэтому мне кажется, что у меня двойная проблема, и я понятия не имею, что делать.
Для информации: средние два @overrides предназначены только для отображения счетчика во время загрузки главной страницы при запуске приложения. Кажется, все работает нормально до последнего @ override.