我第一次尝试时使用下面的代码返回到 webview 中。但由于渲染能力较低,我使用XWalkView代替WebView。
public boolean onKeyDown(int keyCode, KeyEvent event) {
WebView mWebView = (WebView) findViewById(R.id.webview);
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
finish();
if (MainActivity.mTencent.isSessionValid()) {
MainActivity.logout();
}
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
当更改为XWalkView时,我只发现this https://crosswalk-project.org/apis/embeddingapidocs/reference/org/xwalk/core/XWalkNavigationHistory.html关于返回 XWalkView。但我找不到有关使用它的示例。
当我没有实现后退按钮事件时,应用程序将在我双击后退按钮后退出。
我的问题是:
1.如何在XWalkView中使用返回,如果一些代码可能会更有帮助。
2. 当我不使用返回功能时,如何禁用返回按钮单击事件。
先感谢您。
经过几天的挖掘,我解决了这个问题:将其放入活动 xwalkview 中。虽然这有效,但返回有时会丢失一些历史记录。所以我也希望有人在这里给出更好的答案。
对于返回:
public boolean onKeyDown(int keyCode, KeyEvent event) {
//WebView mWebView = (WebView) findViewById(R.id.webview);
XWalkView mXWalkView = (XWalkView) findViewById(R.id.xWalkView);
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (mXWalkView.getNavigationHistory().canGoBack()) {
mXWalkView.getNavigationHistory().navigate(XWalkNavigationHistory.Direction.BACKWARD, 1) ;
} else {
finish();
if (MainActivity.mTencent.isSessionValid()) {
MainActivity.logout();
}
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
要禁用后退事件,您可以覆盖这些方法之一dispatchKeyEvent
, onBackPressed
, onKeyDown
。参考这个答案 https://stackoverflow.com/a/44714357/6521116了解更多。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.dispatchKeyEvent(event);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)