【问题标题】:How can i use canGoBack() on GeckoView我如何在 GeckoView 上使用 canGoBack()
【发布时间】:2021-10-27 21:53:17
【问题描述】:
下面是android Webview的代码
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
如何在 Geckoview 中使用类似的代码,或者如何在 Geckoview 上实现类似的流程?
【问题讨论】:
标签:
android
firefox
webview
mozilla
geckoview
【解决方案1】:
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();
}
}