Не удалось разрешить пункт меню onClick handler

Я застрял и просто измучен, что я делаю неправильно здесь и что мне нужно сделать, чтобы заставить его работать правильно? благодаря

API 11.

Я настраиваю элемент в menu.xml:

И в mainActivity я добавил метод, чтобы скрыть намерение камеры в другой Activity.

/**
 * Method to handle launching the Camera view activity.
 * @param view
 */
public void showCamera(View view) {

}

Но я получаю эту ошибку:

Не удалось разрешить пункт меню onClick handler showCamera в классе com.shindiggy.shindiggy.MainActivity

5 ответов

Я решил это, изменив метод на onCameraClick (элемент MenuItem) и обновив onClick, чтобы отразить его имя "onCameraClick".


Кажется, вы уже решили это, но это то, что беспокоило меня и, безусловно, то, что вы хотели бы прочитать в реальной документации. (Просто чтобы убедиться, что все исправления вы придумали работы на всех телефонах - не только ваши собственные...)

Смотрите здесь: https://developer.android.com/guide/topics/resources/menu-resource#item-element

Свойство android: onClick элемента в меню нуждается в общедоступном методе с параметром MenuItem.

Обратите внимание, что это отличается от, скажем, кнопки!

http://developer.android.com/reference/android/widget/Button.html http://developer.android.com/reference/android/R.attr.html#onClick

Здесь необходим метод, принимающий View как его параметр.


Согласно Android Doc - https://developer.android.com/guide/topics/resources/menu-resource#item-element

андроид: OnClick

Имя метода. Метод вызова при нажатии этого пункта меню. Метод должен быть объявлен в действии как общедоступный и принять MenuItem как единственный параметр, который указывает на щелчок элемента. Этот метод имеет приоритет над стандартным обратным вызовом onOptionsItemSelected(). См. Пример внизу.

Предупреждение. Если вы запутываете свой код с помощью ProGuard (или аналогичного инструмента), обязательно исключите метод, указанный в этом атрибуте, из переименования, поскольку он может нарушить функциональность.

Представлен на уровне API 11.


Я не верю, что menuItem имеет menuItem onClick(). onOptionsItemSelected instead. Use the используйте onOptionsItemSelected instead. Use the onOptionsItemSelected instead. Use the menuItem id ', чтобы узнать, какой элемент был нажат.

Документы меню

@Override
public boolean onOptionsItemSelected(MenuItem item) {
 // Handle item selection
switch (item.getItemId()) {
 case R.id.action_add_shindig:
 // run your showCamera code or call that method
 return true;

Обработка событий кликов

Это касается OptionsMenu но также обсуждается ContextMenu s


Не используйте метод OnClick.

использовать if в методе ниже:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

 int id = item.getItemId();
 if (id == R.id.action_settings) {
 return true;
 }
 else if (id==R.id.action_other)
 {
 Toast toast=Toast.makeText(this, "Other Clicked.", Toast.LENGTH_LONG);
 toast.show();
 }
 else if (id==R.id.action_Exit)
 {
 finish();
 }
 return super.onOptionsItemSelected(item);
}

licensed under cc by-sa 3.0 with attribution.