Как использовать кнопку "Назад", чтобы вернуться с XWalkView CrossWalk, или отключить его?

Я использую приведенный ниже код, чтобы вернуться в веб-просмотр с первой попытки. Но для низкой возможности рендеринга я использовал 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. Но я не могу найти пример, чтобы использовать его. Когда я не реализую кнопку возврата, приложение закроется после того, как я дважды нажму кнопку возврата.

Мой вопрос: 1. Как использовать go back в XWalkView, если какой-то код может быть более полезным. 2. Как отключить событие нажатия кнопки "Назад", если я не использую функцию возврата назад.

Заранее спасибо.

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, Обратитесь к этому ответу для получения дополнительной информации.

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // TODO Auto-generated method stub
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return super.dispatchKeyEvent(event);
}

Ты можешь использовать xwalkviewhistory.cangoback()

Другие вопросы по тегам