2013-04-24 13 views
5

Witam Próbuję utworzyć wiele menu kontekstowych w jednym działaniu. Są dwa przyciski i chcę utworzyć różne menu kontekstowe dla każdego przycisku. Czy ktoś mógłby mi doradzić lub polecić mi jakieś działające przykłady?Tworzenie wielu menu kontekstowych w jednym działaniu

Oto mój obecny kod wygląda.

registerForContextMenu(btn_1); 
registerForContextMenu(btn_2); 


btn_1.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) { 

     openContextMenu(v); 
    } 
}); 

btn_2.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) { 

     openContextMenu(v); 
    } 

}); 


    } 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     getMenuInflater().inflate(R.menu.media_menu, menu); 
     menu.setHeaderTitle("Context menu for btn_1"); 
     menu.setHeaderIcon(R.drawable.icon_media_up); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
     switch(item.getItemId()) { 
      case R.id.photo: 
       Toast.makeText(this, "One", Toast.LENGTH_SHORT).show(); 
       return true; 
      case R.id.video: 
       Toast.makeText(this, "Two", Toast.LENGTH_SHORT).show(); 
       return true; 
      case R.id.audio: 
       Toast.makeText(this, "Three", Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
     return super.onContextItemSelected(item); 
    } 

Odpowiedz

10

musisz sobie z tym poradzić w swojej metodzie onCreateContextMenu. istnieje parametr View, który jest widokiem, który kliknąłeś. Dzięki temu parametrowi możesz nadmuchać różne menu. Na przykład

@Override 
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     if(v.getId() == R.id.first_button) 
      inflate one menu 
     else if(v.getId() == R.id.second_button) 
      inflate another menu   
} 
+0

Dziękujemy! Teraz działa. – user1781367

+0

Serdecznie zapraszamy ... :) – stinepike

1

@Override public void (menu ContextMenu, widok v, ContextMenuInfo menuInfo) onCreateContextMenu {// TODO Automatycznie generowane metoda skrótową super.onCreateContextMenu (menu, v, menuInfo);

MenuInflater menuiflatr=getMenuInflater(); 
    if(v.getId() == R.id.ChooseSession){ 


    menuiflatr.inflate(R.menu.session_menu, menu); 
    menu.setHeaderTitle("Choose Session Type"); 
    menu.setHeaderIcon(R.drawable.ic_launcher); 
    MenuItem item_individual=menu.findItem(R.id.individual); 
    MenuItem item_group=menu.findItem(R.id.group); 
    if(itemselection_for_sessiontype==1)item_individual.setChecked(true); 
    else if(itemselection_for_sessiontype==2)item_group.setChecked(true); 
} 
    else if(v.getId() == R.id.ChooseTrajectory){ 
     //inflate another menu  
     menuiflatr.inflate(R.menu.trajectory_menu, menu); 
     menu.setHeaderTitle("Enable Trajectory"); 
     menu.setHeaderIcon(R.drawable.ic_launcher); 
     MenuItem item_On=menu.findItem(R.id.on); 
     MenuItem item_Off=menu.findItem(R.id.off); 
     if(itemselection_for_trajectory==1)item_On.setChecked(true); 
     else if(itemselection_for_trajectory==2)item_Off.setChecked(true); 
} 
    else if(v.getId() == R.id.ChooseMapeType){ 
     //inflate another menu  
     menuiflatr.inflate(R.menu.maptype_menu, menu); 
     menu.setHeaderTitle("Choose Map Type"); 
    menu.setHeaderIcon(R.drawable.ic_launcher); 
    } 

} @Override public boolean onContextItemSelected (pozycja MenuItem) { przełącznik (item.getItemId()) { przypadek R.id.individual: Toast.makeText (ta „Session Type indywidualna wybrane! ", Toast.LENGTH_SHORT) .show(); item.setChecked (true); itemselection_for_sessiontype = 1; return true;

case R.id.group: 
    Toast.makeText(this, "Session Type Group selected!", Toast.LENGTH_SHORT).show(); 
    item.setChecked(true); 
    itemselection_for_sessiontype=2; 
    return true; 

case R.id.on: 
    Toast.makeText(this, "Trajectory Mode Enabled", Toast.LENGTH_SHORT).show(); 
    item.setChecked(true); 
    itemselection_for_trajectory=1; 
    return true; 

case R.id.off: 
    Toast.makeText(this, "Trajectory Mode Disabled!",    Toast.LENGTH_SHORT).show(); 
    item.setChecked(true); 
    itemselection_for_trajectory=2; 
    return true; 
} 





return super.onContextItemSelected(item); 
} 

public void selectSession(View view){ 
    registerForContextMenu(view); 

    openContextMenu(view); 
} 
Powiązane problemy