Я хочу, чтобы при нажатии кнопки отображалась веб-страница, я использую стандартный подход с WebViewClient и WebChromClient, например, так:
final Button revsButton = (Button) this.findViewById(R.id.buttonReviews);
revsButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
wb.setWebViewClient(new ShareWebViewClient());
wb.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
activity.setTitle("Loading Reviews...");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
}
});
wb.getSettings().setJavaScriptEnabled(true);
wb.loadUrl(revString );
setContentView(wb);
}
});
private class ShareWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
}
Все это прекрасно работает, дело в том, что когда я нажимаю кнопку «Назад», она полностью выходит из моей активности и возвращается на предыдущую страницу. То, что я действительно хочу, чтобы кнопка «Назад» выполняла, - это закрывала WebViewClient и возвращалась к дисплею с кнопкой на нем. Это то, что я пытался сделать до сих пор, половина из которых работала - она не покидала активность, но страница активности была просто пустым экраном вместо того, чтобы показывать элементы управления, которые должны быть там.
@Override
public void onBackPressed() {
if (wb.getVisibility() == View.VISIBLE) {
wb.setVisibility(View.INVISIBLE);
} else {
finish();
}
}