2015-03-19 4 views
0

У меня возникли проблемы с некоторыми методами с моим приложением в Android. Я пытаюсь ответить на кнопку, нажатую пользователем. Вот метод:Панель действий Android Отвечая пользователям

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_search: 
      openSearch(); 
      return true; 

     case R.id.action_settings: 
      openSettings(); 
      return true; 

     default: 
      return super.onContextItemSelected(item); 
    }  
} 

Я смотрел на документах, предоставленных из Google об этом, и он говорит, что эти методы должны называться в зависимости от действий пользователя. Я что-то упускаю?

Область сообщений об ошибках:

Ошибка: (42, 17) Ошибка: не удается найти метод символ OpenSearch()

Ошибка: (46, 17) Ошибка: не удается найти метод символ openSettings()

Любая помощь будет оценена!

Thanks

+0

ли вы объявляете 'openSettings() 'и' openSearch() 'в том же классе, что вы объявляете' onOptionsItemSelected'? – Marcus

+0

Нет, я просто шел по документам google, он ничего не перечисляет об этом (или, если это так, я не могу найти его) – user2101411

+0

Это потому, что это намек на то, что вы должны делать, когда соответствующий пункт меню щелкнул. Вам нужно будет определить свои собственные методы и выполнить код, соответствующий тому, что вы хотели бы достичь в этих ситуациях. См. Мой ответ, пожалуйста. – Marcus

ответ

2

Вы не определили методы openSettings() и openSearch() в котором вы определяете onOptionsItemSelected.

Результатом этого является то, что компилятор скажет вам, что это cannot find symbol method openSearch() и cannot find symbol method openSettings()

Вы просто должны добавить объявление метода внутри Активность:

private void openSettings(){ 
    //Execute relevant code 
} 

private void openSearch(){ 
    //Execute relevant code 
} 
1

Вышеуказанная функция не может быть выполнена при нажатии кнопки. Он выполняется, когда пользователь выбирает элемент из меню.

В настоящий момент компилятор не знает, существуют ли такие подписи метода в классе. Вам нужно будет определить функции внутри класса, а затем использовать их. Думаю, все будет хорошо.

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