2014-02-03 9 views
0

Я занимаюсь добавлением пунктов меню и пытаюсь отреагировать на клики элементов меню. По словам разработчика, guide, он говорит:Меню атрибута атрибута и метода onClick

Совет: Android 3.0 добавляет возможность для Вас, чтобы определить поведение на кнопки мыши по пункту меню в XML, с помощью андроида: OnClick атрибут. Значение атрибута должно быть именем метода, определенного активностью, с помощью меню. Метод должен быть общедоступным и принимать один параметр MenuItem - когда система вызывает этот метод, он передает выбранный пункт меню. Для получения дополнительной информации и примера см. Документ «Ресурс меню».

Однако образец кода на той же странице не соответствует правилу: методы не передают параметр MenuItem. Образец кода:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
     case R.id.new_game: 
      newGame(); 
      return true; 
     case R.id.help: 
      showHelp(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

Мой вопрос: Если не вызовы методов быть NewGame (MenuItem пункт) и ShowHelp (MenuItem пункт), а NewGame() и ShowHelp()? Когда я тестировал свой собственный, (ItemItem item) аргумент был необходим, в противном случае, приложение терпело крах, даже если оно компилируется правильно.

Любая помощь будет оценена по достоинству.

ответ

1

onOptionsItemSelected является альтернативой для определения атрибутов onClick и того, что доступно до Android 3.0 (важно, если вы хотите быть обратно совместимым). Это просто другой способ обеспечить тот же поток процессов. Разумеется, onClick может свернуть ваше приложение во время выполнения, а не onOptionsItemSelected, не обрабатывая пункт меню (просто заставляя его ничего не делать).

+0

О, это звучит так, что я могу использовать любой из них, но не вместе. Я должен попробовать это. Наверное, я неправильно прочитал инструкцию: s – ElectroJunkie

+0

Спасибо. Действительно, все, что мне нужно было onClick, без onOptionItemSelected :) – ElectroJunkie

Смежные вопросы