当用户单击地图时,我必须将一个片段包含地图和另一个片段以显示图钉的详细信息。当用户单击详细信息片段中的后退按钮时,我将覆盖后退按钮以再次显示地图。
fragmentManager.beginTransaction().replace(R.id.content_frame, mapfragment).commit();
当我这样做时,地图正在重新加载。我也尝试使用 addToBackStack 但没有运气。任何人都可以建议如何解决它..
当用户单击地图时,我必须将一个片段包含地图和另一个片段以显示图钉的详细信息。当用户单击详细信息片段中的后退按钮时,我将覆盖后退按钮以再次显示地图。
fragmentManager.beginTransaction().replace(R.id.content_frame, mapfragment).commit();
当我这样做时,地图正在重新加载。我也尝试使用 addToBackStack 但没有运气。任何人都可以建议如何解决它..
看看这个。您需要保存片段的状态。
使用以下代码:
getSupportFragmentManager().beginTransaction()
.add(detailFragment, "detail")
// Add this transaction to the back stack
.addToBackStack()
.commit();
删除您在 onBackPressed 中编写的任何内容。
试着让我知道。
创建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
}
}
欲了解更多信息,请访问此处。