按下后退按钮后,应用程序将关闭,而不是返回上一页...
后退按钮代码不适用于此情况。 我尝试了所有可能的代码,但它仍然没有考虑
<?xml version="1.0" encoding="utf-8"?>
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
</WebView>
main_activity:
public class MainActivity extends AppCompatActivity {
WebView mywebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mywebView = (WebView) findViewById(R.id.webview);
mywebView.getSettings().setJavaScriptEnabled(true);
mywebView.loadUrl("http://www.google.co.in");
mywebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}
});
}
//goto previous page
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch (keyCode){
case KeyEvent.KEYCODE_BACK:
if(mywebView.canGoBack()){
mywebView.goBack();
}
else {
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
}
答案 0 :(得分:4)
您是否曾在onBackPressed()
中尝试过:
@Override
public void onBackPressed() {
if (mywebView.isFocused() && mywebView.canGoBack()) {
mywebView.goBack();
} else {
super.onBackPressed();
}
}
答案 1 :(得分:1)
更改活动中onBackPressed事件的代码:
@Override
public void onBackPressed() {
//write your code here
//super.onBackPressed();
}
答案 2 :(得分:1)
最近我在这个上浪费了很多时间。请仔细看。 WebView Docs shouldoverrideUrlLoading
如果提供了WebViewClient,则返回true会导致当前WebView放弃加载URL,而返回false会导致WebView照常继续加载URL。
因此,shouldOverrideUrlLoading返回应为false,请注意为true。 True将强制同时禁用onbackpress覆盖方法(我认为)并加载更多Urls。
因此,代码应类似于:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){//condition or the code
view.loadUrl(url);
return false;
}
});
我也用过:
@Override
public void onBackPressed() {
if (webview.canGoBack()) {
webview.goBack();
} else {
super.onBackPressed();
}
}
希望我将来对您有帮助!