首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用back按钮返回XWalkView of CrossWalk,或者禁用它?

如何使用back按钮返回XWalkView of CrossWalk,或者禁用它?
EN

Stack Overflow用户
提问于 2016-12-05 06:53:37
回答 2查看 2.4K关注 0票数 2

我使用下面的代码返回到webview中的第一次尝试。但由于渲染能力低,我使用XWalkView替换了WebView。

代码语言:javascript
复制
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中。但我找不到要用它的例子。当我没有实现后退按钮使,应用程序将退出后,我双击后退按钮。

我的问题是: 1.如何在XWalkView中使用go,如果某些代码可能更有帮助的话。2.当我不使用回溯功能时,如何禁用“后退”按钮单击事件。

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-12 01:53:17

经过几天的挖掘,我解决了这个问题:把这个放在activity中。虽然这是可行的,但往回走有时会失去一些历史。所以我也希望有人能给我一个更好的答案。

对于goback:

代码语言:javascript
复制
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);
}

对于禁用back事件,可以重写这些方法中的任何一个-- dispatchKeyEventonBackPressedonKeyDown。有关更多信息,请参考这个答案

代码语言:javascript
复制
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // TODO Auto-generated method stub
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return super.dispatchKeyEvent(event);
}
票数 7
EN

Stack Overflow用户

发布于 2016-12-09 21:04:09

您可以使用xwalkviewhistory.cangoback()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40968633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档