5

在我的整个应用程序中,我希望搜索按钮执行单独的Activity. 即,当我按下搜索按钮时,我希望从应用程序的任何位置调用单独的 Activity。

有什么方法不是onSearchRequested()在每个活动中定义,而是在一个地方(如Manifest.xml)配置它,它可以在整个应用程序中使用?

4

1 回答 1

6

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

IE

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

当然,您也可以通过定义您使用的所有活动子类的抽象子类来组合这两种方法,并使用外部搜索处理程序实现上例中的 onSearchRequest

于 2012-07-21T13:24:12.773 回答