第二次片段加载时如何恢复地图对象

时间:2013-12-11 05:18:54

标签: android mapfragment

我必须将一个Fragment片段包含Map和其他一个片段,以便在用户点击map时显示pin的详细信息。当用户点击Details Fragment中的后退按钮时,我将覆盖后退按钮以再次显示地图。

fragmentManager.beginTransaction().replace(R.id.content_frame, mapfragment).commit();

当我这样做时,地图正在重新加载。我尝试使用addToBackStack也没有运气。任何人都建议如何解决它..

3 个答案:

答案 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