0

我是 android 新手,我正在使用与搜索相关的功能。阅读教程后,我有一些问题:

1SearchableActivity应用程序中的唯一性?

设置搜索功能似乎需要 3 个步骤(来自 android 开发人员指南):

1)创建SearchableActivity接收搜索关键字。

2)使SearchableActivity接受 ACTION_SEARCH 意图

3)在元素中指定要使用的可搜索配置。

然后我想知道是否所有与搜索相关的工作都将委托给SearchableActivity

假设我有两个MainActivityand 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);
}

这不起作用,似乎没有与当前 Activity( MainActivity) 绑定的 serchableInfo。

甚至我也改成这样:

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>

这行得通。哇。

我一直以为Activity提供的Search UI和Activity的输入句柄是不一样的,但是经过我的测试,他们似乎是同一个Activity,并不是说用户输入是提交给Activity本身的,但是为什么要使用传输输入数据的**意图?

2 搜索提交

搜索对话框的右侧有一个搜索提交按钮:

在此处输入图像描述

但是里面什么都没有,SearchView所以如何在 a 中提交搜索SearchView

在此处输入图像描述

4

1 回答 1

1

你的键盘上应该有一个search键。它也可以是go,return或应该开始搜索的类似键。

在此处输入图像描述

于 2013-10-17T09:04:47.377 回答