整个应用程序中的全局“搜索功能”

时间:2012-07-21 13:21:32

标签: android search android-activity

在我的应用程序中,我希望搜索按钮执行单独的Activity。即当我按下搜索按钮时,从应用程序的任何地方,我想要一个单独的Activity被调用。

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

1 个答案:

答案 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,如上例所示