2014-04-12 3 views
0

Сначала я совершенно новый для 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; 
} 

}

ответ

2

Из кода я вижу, вы не называйте setMapType() в onOptionsItemSelected. Карта не может измениться, не вызывая надлежащего метода.

+0

Я не могу получить доступ к карте изнутри onOptionsItemВыбран для вызова setMapType. Поскольку карта создана в ocCreate –

+1

Задайте карту referenece как частный атрибут вашего класса или вы можете получить фрагмент карты через FragmentManager. – greywolf82

Смежные вопросы