簡體   English   中英

一個AndroidManifest.xml中的兩個searchable.xml活動

[英]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並為其他人調用默認值。

假設SearchResultsImageActivitysearchable

我這樣做的一種方法是創建假活動,然后在需要時切換活動。

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM