android - Heremap AndroidXMapFragment 回压处理
问题描述
我使用 HERE 地图 Android SDK 及其 AndroidXMapFragment。我通过以下方式将地图片段添加到我的片段容器中:
appActivity.getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, hereMapFragment, TAG)
.addToBackStack(TAG)
.commit();
但是当后按动作发生时,我得到一个空片段,其中没有地图和对象。所以,问题是:我应该如何处理后按,我应该手动重新创建 AndroidXMapFragment 吗?在文档中,我发现的唯一内容是:
AndroidXMapFragment 对象有自己的生命周期、状态和返回栈,因此假设 AndroidXMapFragment 实例返回的对象(Map 除外)在其附加活动的整个生命周期内都可用是不安全的。
解决方案
在尝试了不同的方法后,我找到了这个问题的答案。所以答案是:如果您必须使用基于片段的应用程序架构,您应该手动处理后按并重新创建 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。
推荐阅读
- c# - C# Visual Studio 无法导入 System.Data.OleDb 库
- asp.net - 定义自定义路由 asp.net mvc5
- vba - 将合并数据从多个工作表复制到 .ActiveWorksheet
- c# - 如何在 C# 中将值从一个类发送到另一个类?
- java - Astyanax 无法读取某些列族
- c++ - 如何将对整数视为分隔变量?
- php - PHP 函数正在回显 - 但我只要求“返回”
- php - Codeigniter 自定义控制器接收 404
- c# - WPF 是否可以在后台加载 UI 的一部分?
- java - Java:可以优化多大的字符串以在序列化对象中占用更少的内存?