2015-11-21 29 views
0

我将语音搜索功能添加到我的应用程序。 从所有的例子,我发现我需要补充的东西是这样的:在Android Manifest其中"@xml/searchable"搜索具有相同活动的两种产品

<application ... > 
<activity android:name=".SearchableActivity" > 
    <intent-filter> 
     <action android:name="android.intent.action.SEARCH" /> 

    </intent-filter> 
    <meta-data android:name="android.app.searchable" 
       android:resource="@xml/searchable"/> 
</activity> 
... 

的资源像这样的:

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

search_hint字符串像"Search <content-or-product>"

的问题是,只有一个

<meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>

可以为Activity指定。所以问题是:我如何使用相同的Activity来处理两种产品的搜索?

回答

1

假设SearchableActivity的功能对任一产品都没有变化,您可以通过创建两个扩展SearchableActivity的活动来解决清单限制问题。

<activity android:name=".SearchProductActivityA"> 
    <intent-filter> 
     <action android:name="android.intent.action.SEARCH" /> 
    </intent-filter> 
    <meta-data android:name="android.app.searchable" 
       android:resource="@xml/searchable_a"/> 
</activity> 
<activity android:name=".SearchProductActivityB" > 
    <intent-filter> 
     <action android:name="android.intent.action.SEARCH" /> 
    </intent-filter> 
    <meta-data android:name="android.app.searchable" 
       android:resource="@xml/searchable_b"/> 
</activity> 
+0

没错,但我想知道是否有更好的解决方案。仅为此创建一个新的活动似乎是错误的。那么如果我你有很多产品(像我一样)... – kingston

+0

我想一个妥协方法是将文本更改为“搜索产品”之类的通用内容。如果只能在元数据中定义一个Searchable,我不会看到其他解决方法。 – fractalwrench