2010-04-25 36 views
13

我已經關注了SearchManager文檔,但仍然無法使我的某個應用的活動搜索到。從我的活動,出現在搜索對話框,我輸入查詢,點擊搜索,我的活動重新打開,然後我看到這個在日誌中:爲什麼我的可搜索活動的Intent.getAction()爲空?

D/SearchDialog( 584): launching Intent { act=android.intent.action.SEARCH flg=0x10000000 cmp=com.clinkybot.geodroid2/.views.Waypoints (has extras) } 
I/SearchDialog( 584): Starting (as ourselves) #Intent;action=android.intent.action.SEARCH;launchFlags=0x10000000;component=com.clinkybot.geodroid2/.views.Waypoints;S.user_query=sdaf;S.query=sdaf;end 
I/ActivityManager( 584): Starting activity: Intent { act=android.intent.action.SEARCH flg=0x10000000 cmp=com.clinkybot.geodroid2/.views.Waypoints (has extras) } 
D/WAYPOINTS(1018): NI Intent { cmp=com.clinkybot.geodroid2/.views.Waypoints (has extras) } 
D/WAYPOINTS(1018): NI null 
D/WAYPOINTS(1018): NI false 

在我看來,一切都很好,直到最後三行。 「NI」行分別爲getIntent().toString(), getIntent().getAction()getIntent().hasExtra(SearchManager.QUERY)

ActivityManager似乎以正確的操作開始我的活動。那麼當我的活動開始時,它不包含任何行動!?我究竟做錯了什麼?

我的清單的相關部分是:

<activity android:name=".views.Waypoints" android:label="Waypoints" android:launchMode="singleTop"> 
    <intent-filter> 
    <action android:name="android.intent.action.SEARCH" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
    <meta-data android:name="android.app.searchable" 
    android:resource="@xml/searchable" /> 
    </activity> 

回答

15

這花了我生命中的太多時間。當從可搜索的singleTop活動(在我的例子中,Waypoints)執行搜索時,您必須重寫onNewIntent()並在那裏抓取搜索查詢。幾個小時後,我正在做。 catch是getIntent()不返回用於調用活動的頭(頭爆炸)。它似乎返回原始的意圖,打開我的搜索活動之前,我執行我的第一個搜索

onNewIntent method收到搜索意圖。我將getIntent()替換爲onNewIntent()中的參數和繁榮進度。

雖然我必須承認,搞清楚這一點減輕了無法逃避的聲音與星共舞在背景中的沮喪。

+0

我很高興在我的頭部爆炸之前發現了這個SO問題。這在應用基礎知識指南中提到,但該死的在[Intent#FLAG_ACTIVITY_SINGLE_TOP](http://j.mp/gkTnyw)中提及onNewIntent而不是僅在[Intent#FLAG_ACTIVITY_CLEAR_TOP](http:///j.mp/fNlEM3)。此外,[Activity#getIntent](http://j.mp/ftcS6p)的文檔甚至沒有提及任何東西!呃... 那就說,謝謝。 – brack 2011-01-07 18:51:46

+1

所以也許最好總是從onCreate調用onNewIntent(getIntent()),只是讓你知道它遵循相同的代碼路徑。 – mclin 2011-01-26 22:22:16

+0

你的問題在這裏解釋http://developer.android.com/guide/topics/search/search-dialog.html#LifeCycle,但是即使應用這個,我仍然得到空... – max4ever 2012-06-01 10:56:13

相關問題