我必须将一个Fragment片段包含Map和其他一个片段,以便在用户点击map时显示pin的详细信息。当用户点击Details Fragment中的后退按钮时,我将覆盖后退按钮以再次显示地图。
fragmentManager.beginTransaction().replace(R.id.content_frame, mapfragment).commit();
当我这样做时,地图正在重新加载。我尝试使用addToBackStack也没有运气。任何人都建议如何解决它..
答案 0 :(得分:1)
检查this。您需要保存片段的状态。
答案 1 :(得分:1)
使用以下代码:
getSupportFragmentManager().beginTransaction()
.add(detailFragment, "detail")
// Add this transaction to the back stack
.addToBackStack()
.commit();
删除你在onBackPressed中写的任何内容。
试着让我知道。
答案 2 :(得分:0)
创建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
}
}
有关详细信息,请转到here。