Kri*_*ofe 2 android keyevent back-button crosswalk xwalkview
我首先尝试使用下面的代码返回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);
}
Run Code Online (Sandbox Code Playgroud)
当更改为XWalkView时,我只能在XWalkView中找到这个.但我找不到一个使用它的例子.当我没有实现后退按钮时,双击后退按钮后应用程序将退出.
我的问题是:1.如何使用返回XWalkView,如果某些代码可能更有帮助.2.当我不使用返回功能时,如何禁用后退按钮单击事件.
先感谢您.
经过几天的挖掘,我解决了这个问题:把它放在xwalkview的活动中.尽管这样可行,但回去有时会失去一些历史.所以我也希望有人在这里给出更好的答案.
对于goback:
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);
}
Run Code Online (Sandbox Code Playgroud)
为禁用回到事件中,你可以重写这两种方法dispatchKeyEvent,onBackPressed,onKeyDown.有关更多信息,请参阅此答案.
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.dispatchKeyEvent(event);
}
Run Code Online (Sandbox Code Playgroud)