2

以下のコードを使用して、最初の試行で webview に戻ります。しかし、レンダリング能力が低いため、WebView の代わりに XWalkView を使用しました。

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 back を使用する方法。2. 戻る機能を使用しない場合、戻るボタンのクリック イベントを無効にするにはどうすればよいですか。

前もって感謝します。

4

2 に答える 2

7

何日も掘り下げた後、私はこれを解決しました。これを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);
}
于 2016-12-12T01:53:17.210 に答える