2013-12-18 6 views
0

У меня есть меню опций, которое позволяет пользователю изменять тип карты на картах Google. Это работает отлично, но я хотел бы предложить функциональность, чтобы изменить маркеры, показывающие, что я управляю логическим значением. Вот мой текущий код.Как изменить логическое значение в onOptionsItemMenuВыбранный Android

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    getMenuInflater().inflate(R.menu.map_styles_menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    super.onOptionsItemSelected(item); 

    switch(item.getItemId()) { 
    case R.id.normal_map: 
     mapType=GoogleMap.MAP_TYPE_NORMAL; 
     break; 

    case R.id.satellite_map: 
     mapType=GoogleMap.MAP_TYPE_SATELLITE; 
     break; 

    case R.id.terrain_map: 
     mapType=GoogleMap.MAP_TYPE_TERRAIN; 
     break; 

    case R.id.hybrid_map: 
     mapType=GoogleMap.MAP_TYPE_HYBRID; 
     break; 
    } 

    googleMap.setMapType(mapType); 
    return true; 
} 

Я думаю, что я хотел бы сделать, это создать еще один случай о как так

case R.id.present: 
     mapChange=true; 
     break; 
case R.id.past: 
     mapChange=false; 
     break; 

я использую элементы в файле меню XML для представления карты, я мог использовать предметы для изменения boolean тоже?

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:id="@+id/map_types" 
    android:title="Menu" 
    android:showAsAction="always"> 
    <menu> 
     <item android:id="@+id/normal_map" 
      android:title="Mormal map"/> 
     <item android:id="@+id/satellite_map" 
      android:title="Satellite map"/> 
     <item android:id="@+id/terrain_map" 
      android:title="Terrain map"/> 
     <item android:id="@+id/hybrid_map" 
      android:title="Hybrid map"/> 
    </menu>  
</item> 

Так что я хотел бы добавить пункт ниже выше, как

<item android:id="@+id/past" 
      android:title="Change to past markers"/> 
+0

Не знаете, что вы хотите (например, почему у вас есть 2 отдельных идентификатора («настоящее» и «прошлое» и что они должны делать?) Если вы ищете отмеченные элементы: http://stackoverflow.com/questions/6239163/android-checkable-menu-item – Michael

+0

Ну, у меня есть логическое значение, и когда true, он запускает код для отображения текущих маркеров, и если false, эти маркеры затем скрыты на карте, а набор других маркеров отображается на user – algorhythm

+0

Так что вам кажется, что вам нужен один пункт меню, который переключается, когда пользователь его выбирает ... Попробуйте проверить элемент из указанной выше ссылки. – Michael

ответ

0

Прежде всего, я хотел бы предложить, чтобы попробовать все, что вы думаете, может работать. И если еще не найти ответа, тогда опубликуйте на SO. С объяснениями, которые вы упомянули и с моими ограниченными знаниями, я пришел к выводу, что вам нужен один вариант в вашем меню опций, который будет переключаться между вашим экраном маркеров и другим экраном маркеров.

Так добавить опцию в вашем XML:

<item android:id="@+id/past" 
     android:title="Change to past markers"/> 

затем в файле Java добавить этот код:

case R.id.past: 
     if(mapChange){ 
     mapChange=false; 
     //your code to show other markers 
     }else{ 
      mapChange=true; 
      //your code to show same markers etc 
     } 
     break; 
0

Ну, если вы хотите, вы можете просто создать еще один метод, названный «changeState() »и поставьте предлагаемый переключатель в этот метод

Private void changeState() { 

Switch(VARIABLE-HERE) 
{ 
case R.id.present: 
mapChange=true; 
break; 
case R.id.past: 
mapChange=false; 
break; 
} 
} 

И назовите его после.

googleMap.setMapType (mapType);

+0

Может ли это добавить дополнительные 2 кнопки в конце меню опций? Конечно, для этого потребуется новое меню опций? По существу мне нужно 6 кнопок друг над другом, когда нажимается меню опций. – algorhythm

+0

Это не добавит две новые кнопки. Я довольно новичок в разработке Android, но промежуточный в аспектах Java, поэтому я могу помочь только до степени java. Извините :) –

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