2014-01-09 4 views
1

Я пытаюсь создать динамическую панель действий в android, сейчас я пытаюсь выполнить поиск в панели действий, как это.Действия, которые не отображаются в панели действий Android.

http://developer.android.com/images/ui/[email protected]

Однако, когда я нажимаю кнопку поиска в панели действий ничего не происходит.

Вот меню XML-файл:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res-auto" > 

<item android:id="@+id/action_search" 
     android:title="" 
     android:icon="@drawable/abc_ic_search" 
     android:showAsAction="ifRoom|collapseActionView" 
     android:actionViewClass="android.support.v7.widget.SearchView"/> 

<item android:id="@+id/action_menu" 
     android:title="" 
     android:icon="@drawable/abc_ic_menu" 
     android:showAsAction="always" 
     android:actionViewClass="android.support.v7.widget.ShareActionProvider"/> 

Вот в OnCreateOptionsMenu в деятельности

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present.  
    getMenuInflater().inflate(R.menu.main, menu); 

    MenuItem searchItem = menu.findItem(R.id.action_search); 
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 

    return true; 
} 

Я знаю значок я имею в панели действий работает, потому что у меня есть этот код работает без проблем

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle presses on the action bar items 
    switch (item.getItemId()) { 
     case R.id.action_search: 
      Toast.makeText(getBaseContext(), "Search icon is working", Toast.LENGTH_LONG).show(); 
      return true; 
     case R.id.action_menu: 
      Toast.makeText(getBaseContext(), "Menu icon is working", Toast.LENGTH_LONG).show(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

Я думаю, что это имеет какое-то отношение к этому:

android:actionViewClass="android.support.v7.widget.SearchView"/> 

Потому что даже когда я удаляю android.support.v7 банку на проект (я просто удалил его, чтобы проверить, я его обратно), я могу выполнить проект без каких-либо ошибок. Возможно, XML-файл не распознает путь android.support.v7?

P.S: значок action_menu тоже не работает.

+0

для onOptionsItemSelected() попробуйте вернуть super.onCreateOptionsMenu (меню); –

ответ

2

Я знаю, что у меня есть значок в панели действий работает, потому что у меня есть этот код работает без проблем

, потребляющее событие, предотвращающих SearchView от работы. Пожалуйста, удалите оба раздела case этого метода, так как они неверны для обоих ваших пунктов меню.

(и, пожалуйста, используйте this, не getBaseContext(), если вы не знаете, что делает getBaseContext())

Here is a sample app, показывающий использование SearchView.

+0

Странно, как что-то вроде этого испортило код. Большое спасибо! – Oscar

0

Дополнительно android.support.v7.widget.SearchView throws NullPointerException по телефону onCreateOptionsMenu() с конфигурацией по умолчанию.

решаемые путем изменения его android.widget.SearchView

Ответ на @CommonsWare действует также. Скорее всего, это правильный ответ.

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