В Android, onContextItemSelected
имеет сингл MenuItem
аргумент и таким образом, не ясно, как определить выбранное представление. MenuItem.getMenuInfo обеспечивает доступ к Contextmenu. ContextMenuInfo, но в то время как оба известных подкласса обеспечивают доступ к целевому представлению, там, кажется, не средство доступа в интерфейсе.
Одна альтернатива должна сохранить View
если в onCreateContextMenu
в частной переменной класса, которая полагается onCreateContextMenu
не будучи названным снова в действии прежде onContextItemSelected
. Другой должен использовать идентификатор View
для itemId
аргумент ContextMenu.add. Если бы мы делаем это, мы должны были бы затем определить опцию, выбранную из контекстного меню при помощи (возможно интернационализировавший) заголовок.
Каков лучший метод для идентификации View
выбранный в onContextSelected
?
В Android не существует такой концепции, как «определение выбранного вида» ни для меню параметров, ни для контекстных меню. Следовательно, ответить на ваш вопрос довольно сложно. Итак, я возьму несколько догадок.
Если под «идентификацией выбранного просмотра» вы имеете в виду, какой пункт меню был выбран, то есть getItemId ()
в MenuItem
, который передается в onOptionsItemSelected ()
или onContextItemSelected ()
.
Если под «идентификацией выбранного представления» вы имеете в виду, какая строка в ListView
была вызвана длительным нажатием, чтобы вызвать контекстное меню, приведите getMenuInfo ()
(вызывается от MenuItem
) до AdapterView.AdapterContextMenuInfo
, затем используйте значения id
или position
в зависимости от вашего адаптера. См. Здесь образец проекта , в котором используется этот метод.
Если под «идентификацией выбранного представления» вы имеете в виду, что у вас есть более одного контекстного меню, отличного от ListView
, в действии, я бы не стал использовать эту технику пользовательского интерфейса.