我需要在我的Android應用程序中實現搜索功能。我希望「搜索」硬件按鈕啓動一個新的活動與已顯示的標準搜索對話框。我想我可以手動做,但也許有一種方法可以使用標準的搜索對話框來做到這一點?如何在新的活動中啓動搜索對話框?
這裏是我做的:
在MainActivity我劫持搜索按鈕,如下所示:
public boolean onKeyDown(int KeyCode, KeyEvent event) {
if (KeyCode==KeyEvent.KEYCODE_SEARCH && event.getRepeatCount() == 0){
Intent i = new Intent(Month.this, SearchActivity.class);
i.setAction("android.intent.action.SEARCH");
startActivity(i);
return true;
}
return super.onKeyDown(KeyCode, event);
}
在Android的Manifest.xml,在SearchActivity部分我有這樣的:
<activity android:name=".SearchActivity"
android:screenOrientation="portrait"
android:launchMode="singleTop"
android:configChanges="keyboardHidden|orientation">
<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>
而且在MainActivity部分:
<activity android:name=".MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
<meta-data android:name="android.app.default_searchable"
android:value=".SearchActivity" />
</activity>
我認爲,發送android.intent.action.SEARCH到SearchActivity應打開搜索對話框。但它不會顯示SearchActivity,但我必須再次按搜索按鈕才能看到搜索對話框。 我錯過了什麼?
在活動時加載該方法'@Override public boolean onSearchRequested(){ return super.onSearchRequested(); }' – 2012-03-18 12:04:02