【问题标题】:Search in android activity在安卓活动中搜索
【发布时间】:2013-10-17 08:54:53
【问题描述】:

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

1 SearchableActivity 在应用程序中是否唯一?

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

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

2) 使SearchableActivity 接受 ACTION_SEARCH 意图

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

那我想知道是不是所有搜索相关的工作都会委托给SearchableActivity

假设我有两个MainActivityMainActivityTwo,它们都在操作栏中创建了一个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

.MainActivity

@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绑定的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>

这行得通。见鬼。

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

2 搜索提交

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

但是SearchView里面什么都没有,那么如何在SearchView中提交搜索:

【问题讨论】:

  • 搜索按钮在键盘的右下角

标签: android android-activity android-search


【解决方案1】:

您的键盘上应该有一个search 键。也可以是 goreturn 或应该开始搜索的类似键。

【讨论】:

  • 我用的是HTC e1,没有search键。 :(
猜你喜欢
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多