CrossWalk的XWalkView如何使用后退按钮返回,或禁用它?
How to use back button to go back with XWalkView of CrossWalk, or disable it?
我第一次尝试使用下面的代码在 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 时,我只在XWalkView 中找到this 返回。但我找不到关于使用它的例子。
当我没有实现后退按钮事件时,双击后退按钮应用程序将退出。
我的问题是:
1.如何在XWalkView中使用go back,如果有一些代码可能会更有帮助。
2. 当我不使用返回功能时,如何禁用返回按钮的点击事件。
提前谢谢你。
您可以使用xwalkviewhistory.cangoback()
经过几天的挖掘,我解决了这个问题:把它放在 activity 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
。参考this answer了解更多。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.dispatchKeyEvent(event);
}
我第一次尝试使用下面的代码在 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 时,我只在XWalkView 中找到this 返回。但我找不到关于使用它的例子。 当我没有实现后退按钮事件时,双击后退按钮应用程序将退出。
我的问题是: 1.如何在XWalkView中使用go back,如果有一些代码可能会更有帮助。 2. 当我不使用返回功能时,如何禁用返回按钮的点击事件。
提前谢谢你。
您可以使用xwalkviewhistory.cangoback()
经过几天的挖掘,我解决了这个问题:把它放在 activity 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
。参考this answer了解更多。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.dispatchKeyEvent(event);
}