在我的应用程序中,我希望搜索按钮执行单独的Activity
。即当我按下搜索按钮时,从应用程序的任何地方,我想要一个单独的Activity被调用。
有没有办法代替在每个活动中定义onSearchRequested()
,我只是在一个地方配置它(如Manifest.xml
),它可以在整个应用程序中使用?
答案 0 :(得分:6)
您可以定义一个(不一定)扩展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
}
如果您计划使用Activity的多个子类,即ListActivity,这可能不是一个好的解决方案,因为您必须为您使用的所有Activity子类创建一个抽象基类。在这种情况下,我建议创建一个额外的类,封装搜索按钮处理代码并从你的活动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,如上例所示