2017-04-13 18 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()メソッドが呼び出されるログが呼び出されます。しかし私の活動は変わりません。ヒストリページが2つある場合は、2回押して、最後のアクティビティに戻ります。私はリフレッシュする必要があると思う。 – 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(code、Ke) –

関連する問題