Поиск в активности Android

Я новичок в Android, и я работаю с функцией, связанной с поиском. После прочтения урока у меня возникли вопросы:

1 Является ли SearchableActivity уникальным в приложении?

Кажется, что для настройки функции поиска требуется 3 шага (из руководства для разработчиков Android):

1) создайте SearchableActivity для получения ключевого слова поиска.

2) заставить SearchableActivity принять намерение ACTION_SEARCH

3) укажите конфигурацию с возможностью поиска для использования в элементе.

Тогда мне интересно, будет ли вся работа, связанная с поиском, делегирована SearchableActivity?

И предположим, у меня есть два MainActivity и MainActivityTwo, оба они образуют SearchView внутри панели действий.

AndroidMinefset.xml:

    <activity android:name="com.app.activity.MainActivityTwo" />
    <activity android:name="com.app.activity.MainActivity" />
    <activity android:name="com.app.activity.SearchableActivity"
                android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>

xml/search.xml:

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

И зарегистрируйте конфигурацию поиска (serchableInfo) вSerchView:

.Основная деятельность

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.u_action_menu_map, menu);

    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);

    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));  
    return super.onCreateOptionsMenu(menu);
}

Это не работает, кажется, что нет serchableInfo, связанного с текущей активностью (MainActivity).

Даже я изменился на это:

searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName("com.app.activity", "SearchableActivity")));

Он по-прежнему не может найти searchableInfo.

После того, как я добавлю конфигурацию, связанную с поиском, в MainActivity:

<activity android:name="com.app.activity.MainActivityTwo" />
<activity android:name="com.app.activity.SearchableActivity" />
<activity android:name="com.app.activity.MainActivity"
            android:launchMode="singleTop" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data
        android:name="android.app.searchable"
        android:resource="@xml/searchable" />
</activity>

Это сработало. ВТФ.

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

2 Поиск отправить

В диалоговом окне поиска есть кнопка отправки поиска в правой части диалогового окна:

введите здесь описание изображения

Но внутри SearchView ничего нет, поэтому как отправить поиск в SearchView:

введите здесь описание изображения


person hguser    schedule 17.10.2013    source источник
comment
Кнопка поиска находится внизу справа на клавиатуре   -  person An-droid    schedule 17.10.2013


Ответы (1)


На клавиатуре должна быть клавиша search. Это также могут быть go, return или подобные клавиши, которые должны запускать поиск.

введите здесь описание изображения

person Szymon    schedule 17.10.2013
comment
Я использую HTC e1, клавиши search нет. :( - person hguser; 18.10.2013