2010-09-24 55 views
1

我沒有使用SearchManager,但我建立了自己的自定義搜索活動。我希望在用戶點擊搜索按鈕時顯示。我怎樣才能做到這一點?如何定義搜索按鈕的活動?

+1

可能重複@手機](http://stackoverflow.com/questions/1912947/android-start-user-defined-activity-on-search-button-pressed-handset) – 2010-09-24 20:11:51

回答

0

裏面自己的應用程序,你可以通過監控onKeyDown()做到這一點,據我所知。

在其他應用程序中,除了通過自定義固件,這是不可能的。

+5

'Activity.onSearchRequested()'似乎是一個更好的選擇。 – 2010-09-24 20:22:08

+0

你能告訴我在代碼中,我怎麼能監視onKeyDown()的搜索按鈕? – 2010-09-24 20:47:43

+1

@Christopher:好點 – CommonsWare 2010-09-25 00:31:15

0

如果我正確理解你,你在問如何啓動你的搜索活動。爲您的按鈕創建一個onClickListener,併爲用戶創建一個EditText字段以輸入文本。在用戶點擊「搜索」按鈕時,查詢搜索活動中的意圖以獲取用戶搜索的內容。

EditText et = new EditText(this); 

public void onClick(View v){ 
    String searchText = et.getText(); 
    Intent intent = new Intent(this, com.example.app.SearchActivity.class); 
    intent.putExtra("searchQuery", searchText); 
    startActivity(intent); 
} 

http://developer.android.com/guide/appendix/faq/commontasks.html#opennewscreen

+0

我知道如何開始我的活動,但我希望它綁定到所有電話上的搜索按鈕。所以當你點擊放大鏡按鈕時,它會調用我的活動。 – 2010-09-24 19:52:38

0

不知道這是否會起作用,但您是否嘗試過擴展可以捕獲搜索意圖的BroadcastReceiver?檢查開發人員參考的意圖似乎是「android.search.action.GLOBAL_SEARCH」。所以,你就會有一個接收器類,如:

public class MyIntentReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals("android.search.action.GLOBAL_SEARCH")) { 
     Intent sendIntent = new Intent(context, MySearchActivity.class) 
     context.startActivity(intent); 
    } 
    } 
} 

在您的清單中,應用程序標籤之間,你應該有搜索按鈕按下[安卓入門用戶定義的活動的

<receiver android:name="MyIntentReceiver"> 
    <intent-filter> 
     <action android:name="android.search.action.GLOBAL_SEARCH" /> 
    </intent-filter> 
</receiver>