Android 第二次加载片段时如何恢复映射对象

Android 第二次加载片段时如何恢复映射对象,android,mapfragment,Android,Mapfragment,当用户单击地图时,我必须将一个包含地图的片段和另一个片段分割,以显示pin的详细信息。当用户单击详细信息片段中的后退按钮时,我将覆盖后退按钮以再次显示地图 fragmentManager.beginTransaction().replace(R.id.content_frame, mapfragment).commit(); 当我这样做时,地图正在重新加载。我也尝试了addToBackStack,但没有成功。有人能建议如何解决它吗?请检查。您需要保存片段的状态。使用以下代码: getSuppo

当用户单击地图时,我必须将一个包含地图的片段和另一个片段分割,以显示pin的详细信息。当用户单击详细信息片段中的后退按钮时,我将覆盖后退按钮以再次显示地图

fragmentManager.beginTransaction().replace(R.id.content_frame, mapfragment).commit();
当我这样做时,地图正在重新加载。我也尝试了addToBackStack,但没有成功。有人能建议如何解决它吗?

请检查。您需要保存片段的状态。

使用以下代码:

getSupportFragmentManager().beginTransaction()
                           .add(detailFragment, "detail")
                           // Add this transaction to the back stack
                           .addToBackStack()
                           .commit();
删除您在Backpressed中写入的任何内容


请尝试告诉我。

创建
SupportMapFragment
时,调用方法
setRetainInstance()


有关更多信息,请转到。

请告诉我是否有用。
public class MapActivity extends AppCompatActivity implements OnMapReadyCallback {

private GoogleMap map;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);
    FragmentManager fm = getSupportFragmentManager();
    SupportMapFragment smf = (SupportMapFragment) fm.findFragmentById(R.id.map);
    smf.setRetainInstance(true);
    smf.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap googleMap) {
    this.map = googleMap;
    // put some markers
}

}