首页 > 解决方案 > 我如何在 GeckoView 上使用 canGoBack()

问题描述

下面是android Webview的代码

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

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

标签: androidfirefoxwebviewmozillageckoview

解决方案


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();
    }
}


推荐阅读