当在 webview 中按下后退按钮时,应用程序退出

When the back button is pressed in webview the app exit

应用程序在按下后退按钮时关闭,而不是返回上一页...

后退按钮代码不适用于这种情况。 我尝试了所有可能的代码,但仍然无法正常工作

<?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);
        }
    }

更改 activity 中的 onBackPressed 事件代码:

 @Override
    public void onBackPressed() {
        //write your code here
        //and comment this: super.onBackPressed();

    }

你在onBackPressed()试过吗,比如:

@Override
    public void onBackPressed() {
        if (mywebView.isFocused() && mywebView.canGoBack()) {
            mywebView.goBack();       
        } else {
            super.onBackPressed();
         }
    }

最近我在这上面浪费了很多时间。请仔细看。 WebView Docs shouldoverrideUrlLoading

If a WebViewClient is provided, returning true causes the current WebView to abort loading the URL, while returning false causes the WebView to continue loading the URL as usual.

所以shouldOverrideUrlLoading return应该是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();
    }

}

希望这对以后有所帮助!