2017-04-13 75 views
0

在包含WebView的我的活動中,我重寫了onBackPressed()方法,這裏是我的代碼。
goBack()方法在Android WebView中不起作用

@Override 
public void onBackPressed() { 

    if(mWebView.canGoBack()){ 
     Log.d("DEBUG","canGoBack"); 
     mWebView.goBack(); 
     return; 
    } 
    super.onBackPressed(); 
} 

字符串「canGoBack」如果有一個歷史頁打印,但活動沒有變化。這是我初始化在onCreate()方法中調用的WebView代碼。

private void initWebViewSettings() { 
    mWebView.setWebViewClient(new MyWebViewClient()); 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); //no cache 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); 
    mWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
} 

這裏是我的onResume()方法中,我調用使用loadURL()。

@Override 
protected void onResume() { 
    super.onResume(); 
    mShopId = getIntent().getIntExtra(App.SHOP_ID,-1); 
    if(mShopId != -1){ 
     mWebView.loadUrl(App.SHOP_URL + mShopId + App.INDEX); 
    } 
} 

回答

0

嗯,這是我對這個問題的解決方案。我也做了同樣的方式爲衆多的WebView項目

webView.setOnKeyListener(new OnKeyListener() 
{ 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     if(event.getAction() == KeyEvent.ACTION_DOWN) 
     { 
      WebView webView = (WebView) v; 

      switch(keyCode) 
      { 
       case KeyEvent.KEYCODE_BACK: 
        if(webView.canGoBack()) 
        { 
         webView.goBack(); 
         return true; 
        } 
        break; 
      } 
     } 

     return false; 
    } 
}); 
+0

謝謝你的解決方案。我不這麼認爲。日誌建議goBack()方法被調用。但我的活動沒有變化。如果有兩個歷史記錄頁面,請按兩次,然後返回上一個活動。我認爲它需要刷新。 – sunpeijie

0

試試我的又回到了舊的鏈接上按下鍵不放

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == event.KEYCODE_BACK && webView.canGoBack()){ 

     webView.goBack(); 
     return false; 
    } 
    return super.onKeyDown(keyCode, event); 
+0

謝謝。它既不工作也不工作。 – sunpeijie

+0

只是嘗試調用此方法一段時間,並檢查它是否工作或不。如webview.onKeyDown(代碼,科) –

相關問題