2011-06-27 18 views
1

我有一個活動WebViewClient中,我重寫這樣WebViewClient歷史錯誤的蜂窩

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { 
     webView.goBack(); 
     return true; 
    } else { 
     finish(); 
     return true; 
    } 
} 

這就像我的手機的魅力,以及我在包括3.0測試模擬器中,onKeyDown方法模擬器。

奇怪的是,在3.1模擬器以及我的Xoom平板電腦(3.0.1)它不起作用。看來webView.canGoBack()總是在這些平臺上返回true。

問題:

是否有其他人發現了類似的行爲?

您是否有一種解決方法/破解,允許我使後退工作在Web視圖歷史記錄中導航以及如果需要最終脫離活動?

更新:因爲我有那麼所以我現在用的這個改變應用程序使用的片斷和compatbility庫:

webView.setOnKeyListener(
      new View.OnKeyListener() { 
       @Override 
       public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { 
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { 
         webView.goBack(); 
         return true; 
        } else { 
         redirectHelper.finish(); 
         return true; 
        } 
       } 
      } 
    ); 

其中重定向助手基本上是一個活動的適當的整理或刪除的包裝來自堆棧的片段。儘管如此,仍然有同樣的問題..

回答

0

我使用3.1和Galaxy Tab 10.1沒有問題。還沒有嘗試過onKeyDown方法。

@Override 
public void onBackPressed() { 
    if(webView.canGoBack()) { 
     webView.goBack(); 
    } else { 
     super.onBackPressed(); 
    } 
} 
+0

我已經移動到碎片,因此無法再測試了。從我可以告訴,雖然這相當於它是什麼。 –