2013-04-24 12 views
5

Ciao Sto cercando di creare più menu contestuali in un'unica attività. Ci sono due pulsanti, e voglio creare diversi menu di scelta rapida per ciascun pulsante. Qualcuno potrebbe consigliarmi o farmi riferimento ad alcuni esempi di lavoro?Creare più menu contestuali in un'unica attività

Ecco il mio codice attuale.

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); 
    } 

risposta

10

devi gestirlo nel tuo metodo onCreateContextMenu. c'è un parametro View che è la vista su cui hai fatto clic. Quindi, usando quel parametro puoi gonfiare diversi menu. Per esempio

@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

Grazie! ora funziona. – user1781367

+0

Siete i benvenuti .. :) – stinepike

1

@Override public void (menu ContextMenu, Vista v, ContextMenuInfo menuInfo) onCreateContextMenu { // TODO metodo generato automaticamente stub 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 (MenuItem articolo) { switch (item.getItemId()) { caso R.id.individual: Toast.makeText (questo, "Session Individuale selezionato! ", 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); 
} 
Problemi correlati