2017-04-13 3 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.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 (code, Ke) –

관련 문제