Create multiple context menus in one action

Hi, I am trying to make several context menus in one action. There are two buttons, and I want to create different context menus for each button. Can someone advise me or pass me some working examples?

Here is my current code.

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);
    }
+5
source share
2 answers

you need to handle this in your method onCreateContextMenu. there is a parameter Viewthat is the view you clicked. Thus, using this option, you can inflate different menus. for instance

@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        
}
+10
source

@Override   public void onCreateContextMenu ( ContextMenu, v,           ContextMenuInfo menuInfo) {       //TODO       super.onCreateContextMenu(, 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) {        (item.getItemId()) {       case R.id.individual:           Toast.makeText(, " !", Toast.LENGTH_SHORT).show();           item.setChecked();           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);
}
+1

All Articles