首页 > 解决方案 > Heremap AndroidXMapFragment 回压处理

问题描述

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

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

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

AndroidXMapFragment 对象有自己的生命周期、状态和返回栈,因此假设 AndroidXMapFragment 实例返回的对象(Map 除外)在其附加活动的整个生命周期内都可用是不安全的。

标签: androidandroid-fragmentshere-apiheremapsheremaps-android-sdk

解决方案


在尝试了不同的方法后,我找到了这个问题的答案。所以答案是:如果您必须使用基于片段的应用程序架构,您应该手动处理后按并重新创建 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);
}

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


推荐阅读