HoneyComb上的WebViewClient历史记录错误

时间:2011-06-27 21:41:40

标签: android webview

我在Activity中有一个WebViewClient,我在其中覆盖onKeyDown方法

@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模拟器一样。

奇怪的是,在3.1模拟器和我的Xoom平板电脑(3.0.1)上,它不起作用。似乎webView.canGoBack()总是在这些平台上返回true。

问题:

还有其他人发现了类似的行为吗?

您是否有一个解决方法/黑客,允许我使backbutton工作在Web视图历史记录中导航,如果需要,最终退出活动?

更新:从那以后我改变应用程序以使用带有兼容性库的片段,所以我现在正在使用它:

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

其中redirect helper基本上是一个包装器,用于正确完成一个活动或从堆栈中删除一个片段。尽管如此仍有同样的问题..

1 个答案:

答案 0 :(得分:0)

我在3.1和Galaxy Tab 10.1上使用它没有问题。没试过onKeyDown方法。

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