在我的應用程序中,我希望搜索按鈕執行單獨的Activity
。即當我按下搜索按鈕時,從應用程序中的任何位置開始,我想要一個單獨的活動被調用。整個應用程序的全局「搜索功能」
有沒有什麼辦法,而不是在每個活動中定義onSearchRequested()
,我只是在一個地方配置它(如Manifest.xml
),它可以在整個應用程序中使用?
在我的應用程序中,我希望搜索按鈕執行單獨的Activity
。即當我按下搜索按鈕時,從應用程序中的任何位置開始,我想要一個單獨的活動被調用。整個應用程序的全局「搜索功能」
有沒有什麼辦法,而不是在每個活動中定義onSearchRequested()
,我只是在一個地方配置它(如Manifest.xml
),它可以在整個應用程序中使用?
您可以定義一個擴展Activity的(不一定)抽象類,在那裏實現onSearchRequest並繼承該類中的所有其他Activity類。這樣你只需要定義onSearch行爲一次。
即
public abstract class MyBaseActivity extends Activity {
@Override
public void onSearchRequest() {
// Your stuff here
}
}
public class MyActivity1 extends MyBaseActivity {
// OnSearchRequest is already implemented
}
如果您計劃使用活動的多個子類,即ListActivity,這可能不是一個很好的解決方案,因爲你必須創建一個抽象基類爲您所使用的所有活動的子類。在這種情況下,我建議你創建一個額外的類,封裝搜索按鈕處理代碼和onSearchRequest調用,從你的活動,即
public class SearchButtonHandle {
public void handleSearch(Context c) {
// Your search btn handling code goes here
}
}
public class MyActivity1 extends Activity { // Or ListActivity ....
@Override
public void onSearchRequest() {
new SearchButtonHandle().handleSearch(this);
}
}
當然你也可以通過定義所有活動的一個抽象類既包括approches您使用和實施onSearchRequest的子類與上面的示例中一樣使用外部搜索處理程序
這實際上是一個好主意,但如果他想在某處使用ListView活動呢? – Michal 2012-07-21 13:28:45
@Michal我想在這種情況下,如果他使用多個ListActivities或Activity的其他子類,組合可能是比繼承更好的解決方案。他可以創建一個搜索處理類,封裝處理搜索按鈕的代碼並從所有活動中調用它。我會編輯我的答案,以一個例子來指出 – 2012-07-21 13:43:25
請確保您標記答案正確,如果您使用它。如果沒有,請提供更多信息。 – Michal 2012-07-23 07:23:45