Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android “全球”;搜索功能“;在整个应用程序中_Android_Search_Android Activity - Fatal编程技术网

Android “全球”;搜索功能“;在整个应用程序中

Android “全球”;搜索功能“;在整个应用程序中,android,search,android-activity,Android,Search,Android Activity,在整个应用程序中,我希望搜索按钮执行单独的活动。i、 e.在应用程序中的任何地方,当我按下搜索按钮时,我希望调用单独的活动 有没有办法不在每个活动中定义onSearchRequested(),而只在一个地方配置它(比如Manifest.xml),并且它可以在整个应用程序中使用?您可以定义一个(不一定)扩展活动的抽象类,在那里实现onSearchRequest并从该类继承所有其他活动类。这样,您只需定义onSearch行为一次 i、 e 如果您计划使用活动的多个子类,即ListActivity,这

在整个应用程序中,我希望搜索按钮执行单独的
活动
。i、 e.在应用程序中的任何地方,当我按下搜索按钮时,我希望调用单独的活动

有没有办法不在每个活动中定义
onSearchRequested()
,而只在一个地方配置它(比如
Manifest.xml
),并且它可以在整个应用程序中使用?

您可以定义一个(不一定)扩展活动的抽象类,在那里实现onSearchRequest并从该类继承所有其他活动类。这样,您只需定义onSearch行为一次

i、 e

如果您计划使用活动的多个子类,即ListActivity,这可能不是一个好的解决方案,因为您必须为您使用的所有活动子类创建一个抽象基类。在这种情况下,我建议创建一个额外的类,封装搜索按钮处理代码,并在searchrequest上调用它

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);
    }
}

当然,您也可以通过定义您使用的所有活动子类的抽象子类来结合这两种方法,并使用外部搜索处理程序实现onSearchRequest,如上例所示,这实际上是一个好主意,但如果他想在某处使用ListView活动呢?@Michal我想在这种情况下,这取决于,如果他使用多个ListActivities或活动的其他子类,组合可能是比继承更好的解决方案。例如,他可以创建一个搜索处理类,封装处理搜索按钮的代码,并从所有活动调用taht。我将编辑我的答案,用一个例子指出这一点。若你们使用了这个答案,请确保你们的答案是正确的。如果没有,请向我们提供更多信息。
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);
    }
}