2014-01-21 2 views
0

Я пытался реализовать панель действий с полем поиска, на основе официального андроида Tuto (http://developer.android.com/training/search/setup.html)Android: Поиск кнопка панели действий

Вот мои файлы:

файл манифеста:

<application 
... 
    android:theme="@style/Theme.AppCompat.Light" > 

<activity 
      android:name=".activities.MainActivity" 
      android:label="@string/title_activity_main" > 
      <meta-data 
       android:name="android.app.searchable" 
       android:resource="@xml/searchable" /> 
     </activity> 

    <activity 
     android:name=".activities.SearchActivity" 
     android:configChanges="orientation|keyboardHidden" 
     android:screenOrientation="portrait" 
     android:windowSoftInputMode="stateHidden" > 
      <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 
    </activity> 

... 

</application> 

(мета-данные присутствуют)

MainActivity:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Inflate the menu; this adds items to the action bar if it is present. 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.action_bar_menu, menu); 

    //Searchable configuration 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); //MenuItemCompat. 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

    return super.onCreateOptionsMenu(menu); 

} 

action_bar_menu.xml:

<item 
    android:id="@+id/search" 
    android:icon="@drawable/ic_action_search" 
    android:title="@string/menu_search" 
    yourapp:actionViewClass="android.support.v7.widget.SearchView" 
    yourapp:showAsAction="always"/> 

Рез/XML/searchable.xml:

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:hint="my hint" 
    android:label="@string/app_name" /> 

бар Действие и его кнопки поиска отображаются. Я могу вводить данные, но при нажатии на кнопку поиска (виртуальная клавиатура) ничего не добавляется.

Любые идеи? Спасибо

ответ

1

Используйте этот код

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.activity_sky_reader_android, menu); 

    SearchView mSearchView = (SearchView) menu.findItem(R.id.menu_search); 
    setupSearchView(mSearchView); 
    return true; 

} 


private void setupSearchView(final MenuItem searchItem) { 

    searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM 
       | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 
    mSearchView.setOnQueryTextListener(new OnQueryTextListener() { 

     @Override 
     public boolean onQueryTextSubmit(String query) { 
      // TODO Auto-generated method stub 

      return true; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      // TODO Auto-generated method stub 
      return true; 
     } 
    }); 
} 
+0

Благодарим за ваш ответ. Он работает с «setOnQueryListener», но я хотел бы использовать «android.intent.action.SEARCH». – johann

1

Ярлык на поиск должен быть тем же самым Тар одним из деятельности, попробуйте этот

в проявленном

<activity 
     android:name=".activities.SearchActivity" 
     android:configChanges="orientation|keyboardHidden" 
     android:screenOrientation="portrait" 
     android:label="@string/app_search" 
     android:windowSoftInputMode="stateHidden" > 
      <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 
    </activity> 

В доступный для поиска

<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:hint="my hint" 
    android:label="@string/app_search" /> 

Надеюсь, что он работает

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

  • Нет связанных вопросов^_^