2010-10-19 96 views
17

我有一個Android應用程序,它有幾個不同的活動來瀏覽從RSS下載的文章和圖像。兩個searchable.xml活動在一個AndroidManifest.xml中

我希望能夠提供掛鉤search button to the Search dialog,使用一個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默認搜索。

如果我將default_searchable更改爲SearchResultsImageActivity,圖像搜索始終啓動,文章搜索從未啓動。

如果我一起刪除default_searchable元數據元素,並添加searchable僅限元數據選定的活動,則不會啓動搜索。

我很確定這應該是可能的,但我不知道我做錯了什麼。

+0

你知道了嗎? – Dan 2011-02-23 12:54:36

+0

我不認爲你可以使用XML來做到這一點,因爲資源是一對一的意圖。您可能能夠將代碼中的資源切換出來。 – JPM 2011-06-06 19:53:02

回答

1

我這樣做的一個方法是創建假活動,然後在需要時開出活動。

<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調用的意圖:

+0

我還沒有在活動模式中遇到過這個活動。我不清楚這是做什麼。 – jamesh 2011-06-13 14:05:51

+0

它是點擊按鈕時切換活動的一種方式,但允許您將主要活動保留在後臺。在從RSS源中搜索文檔時很有用。 – JPM 2011-06-21 18:42:02

0

如果忽略搜索在該活動中起作用,它應該阻止搜索調用進入應用程序級別。返回值控制是否傳播呼叫。

@Override 
public boolean onSearchRequested() { 
    onPromptSearch(); 
    return false; // don't go ahead and show the search box 
} 
4

在你Manifest文件更新ImageListActivity活動標籤

<activity 
    android:name=".ImageListActivity" 
    ... 

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

所以,當你將觸發本地搜索在ImageListActivity它將調用SearchResultsImageActivity和默認的爲別人着想。

假定SearchResultsImageActivitysearchable

+0

這是行得通的。 – 2012-10-22 09:43:14

相關問題