onSearchRequested()导致相同的活动

时间:2012-04-24 09:33:57

标签: android

我已经在我的应用程序中通过列表实现了搜索方法onSearchRequested(),它运行良好,我为列表数据创建了2个活动,为搜索结果创建了另一个活动 以那种形式

public class acitvity1扩展了InterfaceBase {

    @Override
    ListAdapter makeMeAnAdapter(Intent intent) {

          return(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items));

    }       
}

以及包含搜索结果的活动2

public abstract class Acitvity2 extends InterfaceBase {

   @Override
    ListAdapter makeMeAnAdapter(Intent intent) {

            ListAdapter adapter=null;

            if (intent.getAction().equals(Intent.ACTION_SEARCH)) {
                    String query=intent.getStringExtra(SearchManager.QUERY);
                    List<String> results=searchItems(query);

                    adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,results);
                    setTitle("Search : "+query);
            }
            return(adapter);
    }  
    private List<String> searchItems(String query) {
            SearchSuggestionProvider
                    .getBridge(this)
                    .saveRecentQuery(query, null);

            List<String> results=new ArrayList<String>();

            for (String item : items) {
                    if (item.indexOf(query)>-1) {
                            results.add(item);
                    }
            }
            return(results);
    }

因此有可能使搜索结果出现在activity1中的回调活动中,并且清单文件中是否应该进行任何更改 请求帮助

1 个答案:

答案 0 :(得分:0)

你需要像这样覆盖onNewIntent:

@Override
protected void onNewIntent(Intent intent) {
    makeMeAnAdapter(intent);
}

然后在activity2中包含搜索元数据,例如:

<meta-data android:name="android.app.searchable" android:resource="@xml/search" />