0

下面是android Webview的代码

public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    } else {
        super.onBackPressed();
    }
}

我如何在 Geckoview 中使用类似的代码,或者如何在 Geckoview 上实现类似的过程?

4

1 回答 1

2

GeckoView 通过提供这条信息NavigationDelegate.onCanGoBack但不存储它,因此您需要创建一个类来实现NavigationDelegate.

首先创建自己的委托类:

private class MyNavigationDelegate implements GeckoSession.NavigationDelegate {
    public boolean canGoBack = false;

    @Override
    public void onCanGoBack(GeckoSession session, boolean canGoBack) {
        this.canGoBack = canGoBack;
    }
}

private MyNavigationDelegate navigationDelegate = new MyNavigationDelegate();

然后将委托设置在您创建的地方GeckoSession

session.setNavigationDelegate(navigationDelegate);

然后你可以onBackPressed像这样实现:

public void onBackPressed() {
    if (navigationDelegate.canGoBack) {
        session.goBack();
    } else {
        super.onBackPressed();
    }
}

于 2021-08-31T14:15:19.480 回答