Можно ли иметь 2 контекстных меню в одной и той же деятельности?
У меня есть активность с TextView
и значок изображения. Я уже создал контекстное меню для значка изображения, переопределив onCreateContextMenu()
,
Тем не менее, я хотел бы также иметь другое контекстное меню для TextView
, Тем не менее, я заметил, что я уже использую onCreateContextMenu()
:
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle(getString(R.string.option1));
menu.add(0, v.getId(), 0, getString(R.string.option2));
menu.add(0, v.getId(), 0, getString(R.string.options3));
}
Следовательно, есть ли добавить еще одно контекстное меню для TextView
?
2 ответа
Решение
Вы можете использовать переданный объект View в onCreateContextMenu, чтобы определить владельца меню и соответственно заполнить меню.
Ваш код должен выглядеть примерно так:
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
switch (v.getId()) {
case R.id.imageIconId:
menu.setHeaderTitle(getString(R.string.option1));
menu.add(0, v.getId(), 0, getString(R.string.option2));
menu.add(0, v.getId(), 0, getString(R.string.options3));
break;
case R.id.textViewid:
// do whatever you want with the menu object.
break;
}
}
Параметры, переданные вам этим методом, помогут вам переходить к различным вещам.
Вот пример:
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if( v.equals(yourImgView) ){
menu.setHeaderTitle(getString(R.string.option1));
menu.add(0, v.getId(), 0, getString(R.string.option2));
menu.add(0, v.getId(), 0, getString(R.string.options3));
}else if ( v.equals(yourTxtView) ) {
//Do your textView things.
}
}