Here Map Android Map Fragment 回压处理

Heremap AndroidXMapFragment back press handling

我使用 HERE 地图 Android SDK 及其 AndroidXMapFragment。 我通过以下方式将地图片段添加到我的片段容器中:

appActivity.getSupportFragmentManager().beginTransaction()
            .replace(R.id.fragment_container, hereMapFragment, TAG)
            .addToBackStack(TAG)
            .commit();

但是当发生后退动作时,我得到一个空片段,其中没有地图和对象。 所以,问题是:我应该如何处理回按,我应该手动重新创建 AndroidXMapFragment 吗? 在文档中,我唯一发现的是:

AndroidXMapFragment objects have their own lifecycle, state, and back stack, thus it is unsafe to assume objects returned by a AndroidXMapFragment instance (with the exception of Map) will be available throughout the lifetime of its attached activity.

在尝试了不同的方法后,我找到了问题的答案。 所以答案是: 如果您必须使用应用程序的 fragment-based 架构,您应该手动处理后退并重新创建 AndroidXMapFragment 并使用您拥有的参数再次初始化它。 在这种情况下,您应该使用:

appActivity.getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, searchLocationFragment, TAG)
                .commit();

没有 addToBackStack 方法。并且还可以使用 Activity 的覆盖方法来处理后退压力:

@Override public void onBackPressed() {
        Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
        AppController.instance(this).onBackPressed(fragment);
}

但如果不需要保留fragment-based架构,我建议使用最新的sdk。有一个 MapView,您可以使用它代替 AndroidXMapFragment。