我在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基本上是一个包装器,用于正确完成一个活动或从堆栈中删除一个片段。尽管如此仍有同样的问题..
答案 0 :(得分:0)
我在3.1和Galaxy Tab 10.1上使用它没有问题。没试过onKeyDown方法。
@Override
public void onBackPressed() {
if( webView.canGoBack() ) {
webView.goBack();
} else {
super.onBackPressed();
}
}