当方向改变时,地图上的标记消失

时间:2014-03-06 13:58:48

标签: android google-maps android-fragments android-activity android-tabs

我已经发现了一个包含两个标签的简单活动。这些标签与片段相关联:第一个是MapFragment,第二个是ListFragment。 我以这种方式覆盖了onCreate方法:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.path_summary);

    final ActionBar actionbar = getActionBar();
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    actionbar.addTab(actionbar.newTab()
            .setText("Map")
            .setTabListener(new TabListener<com.google.android.gms.maps.MapFragment>(
                    this, "map", com.google.android.gms.maps.MapFragment.class)));

    actionbar.addTab(actionbar.newTab()
            .setText("List")
            .setTabListener(new TabListener<com.example.northfinder.PathListFragment>(
                    this, "list", com.example.northfinder.PathListFragment.class)));


    if (savedInstanceState != null) {
        actionbar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
    }

}

然后我需要在地图上写(添加一个标记),所以我重写了onResume方法:

protected void onResume() {
    super.onResume();

        FragmentManager fm = getFragmentManager();
        Fragment f = fm.findFragmentByTag("map");
        if(f!= null && f.isAdded())
        setUpMapIfNeeded((MapFragment)f);
    }

其中setUpIfNeeded定义如下:

private static void setUpMapIfNeeded(MapFragment mMapFragment) {
    // Do a null check to confirm that we have not already instantiated the map.
    if (mMap == null) {
        mMap = mMapFragment.getMap();

    }
        if (mMap != null) {
            mMap.clear()
        mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
    }
}

一切都很好。当Activity开始时,标记在MapFragment中正确添加,当我更改制表符然后我返回第一个标签时,标记仍然可见。

我遇到了一个问题:当方向改变时,标记会消失。为什么呢?

1 个答案:

答案 0 :(得分:0)

我解决了在回调onTabSelectedonTabReselected

中添加此代码的问题
if(mTag.compareToIgnoreCase("map")==0)
{
    setUpMapIfNeeded((MapFragment)mFragment);
}
相关问题