从菜单更改活动

时间:2014-04-12 10:10:13

标签: android google-maps android-activity oncreate

首先,我对android很新。我试图得到一个简单的地图来改变类型,虽然我可以让mapType像一个指针一样,但是看起来是因为onCreate使用的值变化并不会导致活动刷新。看一下网上关于菜单的例子,他们似乎都开始了新的活动,但我不认为发起一项新活动并关闭旧活动听起来像是最好的做法。所以我想知道如何获得一个活动来获取更改或者可以将地图视为指针,然后我可以刷新地图吗?

public class MainActivity extends Activity {
private int mapType = GoogleMap.MAP_TYPE_SATELLITE;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    GoogleMap map = ((MapFragment) getFragmentManager()
            .findFragmentById(R.id.map)).getMap();
    map.setMyLocationEnabled(true);

 // Other supported types include: MAP_TYPE_NORMAL,
    // MAP_TYPE_TERRAIN, MAP_TYPE_HYBRID and MAP_TYPE_NONE
    map.setMapType(mapType);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int temp = item.getItemId();
    Log.v(Integer.toString(temp), "is");
    switch (item.getItemId()) {
    case R.id.hybridSettings: 
        mapType = GoogleMap.MAP_TYPE_HYBRID;
        return true;
    case R.id.terrainSettings:
        mapType = GoogleMap.MAP_TYPE_TERRAIN;
        return true;
    case R.id.normalSettings:
        mapType = GoogleMap.MAP_TYPE_NORMAL;
        return true;
    }
    return false;
}

}

1 个答案:

答案 0 :(得分:2)

从你的代码中我发现你没有在onOptionsItemSelected中调用setMapType()。如果没有调用正确的方法,地图就无法改变。