簡體   English   中英

在 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>

主要活動:

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

我最近在這個上浪費了很多時間。 請仔細看。 WebView Docs shouldoverrideUrlLoading

如果提供了 WebViewClient,則返回 true 會導致當前 WebView 中止加載 URL,而返回 false 會導致 WebView 像往常一樣繼續加載 URL。

所以 shouldOverrideUrlLoading 返回應該是假的,注意是真的。 True 將強制禁用 onbackpress 覆蓋方法(我認為)並加載更多 URL。

所以代碼應該是這樣的:

@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();
    }

}

希望我這會在未來有所幫助!

您是否在onBackPressed()嘗試過,例如:

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

在您的活動中更改 onBackPressed 事件的代碼:

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

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM