Как я могу добавить различные пункты меню в несколько контекстных меню? - PullRequest
2 голосов
/ 14 марта 2011

У меня есть две кнопки, каждая с контекстным меню, но я не уверен, как изменить пункты меню во втором меню. Мой код показывает только мои позиции для моей первой кнопки.

Button Button1 = (Button) findViewById(R.id.Button1);
registerForContextMenu(Button1); 

Button Button2 = (Button) findViewById(R.id.Button3);
registerForContextMenu(Button2); 
}


@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Select Notification");
menu.add(0, v.getId(), 0, "Algebraic");
menu.add(0, v.getId(), 0, "Knuckle Train");
menu.add(0, v.getId(), 0, "In My Element ");
menu.add(0, v.getId(), 0, "Let's Get This Party");
menu.add(0, v.getId(), 0, "Shmowzow");
menu.add(0, v.getId(), 0, "What the Jug");
menu.add(0, v.getId(), 0, "Word to Your Mother");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle()=="Algebraic"){function1(item.getItemId());}
else if(item.getTitle()=="Knuckle Train"){function2(item.getItemId());}  
else if(item.getTitle()=="In My Element"){function3(item.getItemId());} 
else if(item.getTitle()=="Let's Get This Party"){function4(item.getItemId());}  
else if(item.getTitle()=="Shmowzow"){function5(item.getItemId());}  
else if(item.getTitle()=="What the Jug"){function6(item.getItemId());}  
else if(item.getTitle()=="Word to Your Mother"){function7(item.getItemId());}  
else {return false;}
return true;
}

Ответы [ 2 ]

7 голосов
/ 14 марта 2011

Сравните, какая кнопка была передана как View в onCreateContextMenu:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    if (v == Button1) {
        menu.setHeaderTitle("Select Notification");
        menu.add(0, v.getId(), 0, "Algebraic");
        menu.add(0, v.getId(), 0, "Knuckle Train");
        menu.add(0, v.getId(), 0, "In My Element ");
        menu.add(0, v.getId(), 0, "Let's Get This Party");
        menu.add(0, v.getId(), 0, "Shmowzow");
        menu.add(0, v.getId(), 0, "What the Jug");
        menu.add(0, v.getId(), 0, "Word to Your Mother");
    } else if (v == Button2) {
        // stuff for Button2
    }
}
0 голосов
/ 02 августа 2012

Добавить ContextMenu элемент для другого виджета в Android очень легко.Позвольте мне объяснить, как это сделать.

Например, в вашем XML-файле есть два виджета, содержащие макет для вашей деятельности.

  1. txtnum1
  2. txtnum2

Вы установили слушателя для них обоих, используя приведенный ниже код

this.registerForContextMenu(txtnum1); this.registerForContextMenu(txtnum2);

Затем вы переопределяете следующий метод

@Override 
public void onCreateContextMenu(ContextMenu mymenu, View v, ContextMenuInfo menuInfo)

Теперь давайте рассмотрим, что если пользователь долго нажимает на txtnum1 , вы хотите отобразить квадрат из двух элементов и qube какпункт контекстного меню, и если пользователь долго нажимает txtnum2 , вы хотите отобразить xxx и yyy в качестве пункта контекстного меню.

Это должно быть сделано с использованием приведенного ниже кода

@Override
public void onCreateContextMenu(ContextMenu mymenu, View v, ContextMenuInfo menuInfo)
{
    Toast.makeText(this,String.valueOf(v.getId()),1000).show();
    if(v.equals(txtnum1)==true)
    {
        mymenu.add(0,1,0,"Square");
        mymenu.add(0,2,0,"Qube");
    }
    else if(v.equals(txtnum2)==true)
    {
        mymenu.add(0,1,0,"xxx");
        mymenu.add(0,2,0,"yyy");
    }
    super.onCreateContextMenu(mymenu, v, menuInfo);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...