在 Fragment 中恢复 Google Maps 状态

Posted

技术标签:

【中文标题】在 Fragment 中恢复 Google Maps 状态【英文标题】:Restore Google Maps state in Fragment 【发布时间】:2021-03-18 19:54:50 【问题描述】:

我正在创建一个应用程序,其中有一个包含地图的片段。当用户点击搜索栏时,会显示另一个片段(搜索片段),我在其中处理所有搜索逻辑,包括显示建议。搜索完成后,我在与搜索查询对应的点添加一个标记。然而,片段被重新创建并且onMapReady() 也被调用。因此,在将相机移动到我想要放置标记的位置的过程中,出现了一个故障,它不会显示从SearchFragmentMapsFragment 的平滑过渡。有没有办法保存地图状态以避免onMapReadyCallback,以便从SearchFragmentMapsFragment 的过渡变得无缝?

【问题讨论】:

【参考方案1】:

您可以在MapsFragment 中设置setRetainInstance(true)

Java:

public class MyMapFragment extends Fragment 

    @Override
    public void onActivityCreated(Bundle savedInstanceState) 
        super.onActivityCreated(savedInstanceState);
        setRetainInstance(true);
    

科特林:

class MyMapsFragment : Fragment() 

    override fun onActivityCreated(savedInstanceState: Bundle?) 
        super.onActivityCreated(savedInstanceState)
        retainInstance = true
    

【讨论】:

非常感谢。我忘记设置setRetainInstance(true)。我真的很感激

以上是关于在 Fragment 中恢复 Google Maps 状态的主要内容,如果未能解决你的问题,请参考以下文章

fragment生命周期

Activity恢复时如何获取Fragment

Android Fragment使用 Activity, Fragment, WebView的状态保存和恢复

在 Android 的 Fragment 中使用 Google 地图

在替换 Fragment 的双轮换后恢复 Fragment 时清空 savedInstanceState Bundle

我踩到的关于Fragment 状态的保存和恢复的坑