[英]Two searchable.xml activities in one AndroidManifest.xml
我有一個Android應用程序,它有一些不同的活動,用於瀏覽從RSS下載的文章和圖像。
我希望能夠使用searchable.xml
文件將搜索按鈕連接到“搜索”對話框 。 我通過一次搜索設法做到了這一點,使用:
<activity android:name=".search.SearchResultsActivity"
android:label="@string/search_results_activity_title" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable_articles"/>
</activity>
並在<application />
<meta-data android:name="android.app.default_searchable"
android:value=".search.SearchResultsActivity" />
我現在可以從任何活動啟動“搜索”對話框,並啟動SearchResultsActivity
。
我現在希望能夠在用戶是ImageListActivity
時使用searchable_images.xml
,並在其他任何地方使用默認值。
我有一個SearchResultsImageActivity
,它包含以下元數據元素,並在ImageListActivity
使用相同的元素。
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable_images"/>
按下ImageListActivity
的搜索按鈕,我從searchable_articles.xml
獲取默認searchable_articles.xml
。
如果我將default_searchable
更改為SearchResultsImageActivity
,則始終啟動圖像搜索,並且永遠不會啟動文章搜索。
如果我完全刪除default_searchable
元數據元素,並僅添加searchable
元數據,則不會啟動任何搜索。
我很確定這應該是可能的,但我不知道我做錯了什么。
在您的Manifest
文件中更新ImageListActivity
活動標記
<activity
android:name=".ImageListActivity"
...
<meta-data
android:name="android.app.default_searchable"
android:value=".SearchResultsImageActivity" />
</activity>
因此,當您在ImageListActivity
觸發本機搜索時,它將調用SearchResultsImageActivity
並為其他人調用默認值。
假設SearchResultsImageActivity
是searchable
。
我這樣做的一種方法是創建假活動,然后在需要時切換活動。
<activity android:name="activitySearchMain" />
<activity android:name="activitySearchSub1">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.ALTERNATIVE" />
<category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
<data android:scheme="user" />
</intent-filter>
</activity>
<activity android:name="activitySearchSub2">
<intent-filter>
<action android:name="com.sample.twitter.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.ALTERNATIVE" />
<category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
<data android:scheme="user" />
</intent-filter>
</activity>
創建兩個為子活動命名的類。
然后在單擊組件時創建這樣的意圖...
Intent sourceIntent = getIntent();
Intent newIntent = new Intent(this, activitySearchSub2.class);
newIntent.setAction(activitySearchSub2.ACTION2);
newIntent.setData(sourceIntent.getData());
startActivity(newIntent);
finish();
並在單擊按鈕或單擊其他組件時從onClick調用意圖:
如果您僅在該活動中覆蓋搜索功能,則應阻止搜索調用上升到應用程序級別。 返回值控制呼叫是否向上傳播。
@Override
public boolean onSearchRequested() {
onPromptSearch();
return false; // don't go ahead and show the search box
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.