如何声明默认的可搜索活动

时间:2010-10-28 16:18:03

标签: android

我正在尝试在我的应用程序中实现搜索。

我的应用程序包含4个活动,我想只在其中3个上添加搜索对话框,而其中只有一个(ProductsActivity)将是默认上下文。

不幸的是,当我激活搜索时,我不断收到以下错误: “关键android.app.default_searchable期望String但值是java.lang.Integer。返回默认值。”

 <activity android:label="@string/app_name" class=".AppEntry" android:name=".AppEntry">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
 </activity>
 <activity android:name=".category.CategoriesListActivity">
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
 </activity>
 <activity android:name=".product.ProductsActivity">
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.default_searchable" android:resource="@xml/searchable"/>
    </activity>

知道为什么吗?

由于

3 个答案:

答案 0 :(得分:3)

对于默认的可搜索活动,您必须将元数据标记放在应用程序标记下。

<application ... >  
<meta-data android:name="android.app.default_searchable" 
    android:value=".DefaultSearchActivity"/>

<activity android:name=".ProductActivity" >
    ...
    <meta-data android:name="android.app.default_searchable" 
        android:value=".SearchActivityForProducts"/>
</activity>
...

在该示例中,默认应用程序搜索将在 DefaultSearchActivity 上完成,而在 ProductActivity 中,搜索将在 SearchActivityForProducts 上进行。希望它可以帮到某人。

答案 1 :(得分:2)

不应该是

<meta-data android:name="android.app.default_searchable" 
    android:value=".product.ProductsActivity"/>

而不是再次传递@xml引用。

答案 2 :(得分:0)

有一件非常重要的事情是按照Android准则说明http://developer.android.com/guide/topics/manifest/activity-element.html#nm

正确命名您的活动
  

android:name实现活动的类的名称,a   Activity的子类。属性值应该是完全限定的   类名(例如“com.example.project.ExtracurricularActivity”)。   但是,作为简写,如果名称的第一个字符是a   句号(例如“.ExtracurricularActivity”),附加到   元素中指定的包名称。一旦发布   你的申请,你不应该改变这个名称(除非你设置   机器人:导出= “假”)

     

没有默认值。必须指定名称。

如果您未将DOT放入活动名称,则搜索操作仅适用于您声明为“default_searchable”的活动。这个小DOT花了我们几个小时所以要小心!