如何解决Android通过可搜索活动进行搜索
| 我有一个包含列表的活动。通过Android onSearchRequested(),我实现了搜索。 结果显示为另一个活动中具有相同适配器的列表。到目前为止工作正常。 另外,我希望能够从第二个活动中搜索,该活动在同一列表中显示新结果。 我的AndroidManifest.xml用于两个活动:<activity android:name=\".ListActivity\" android:label=\"List\">
<meta-data android:name=\"android.app.default_searchable\" android:value=\".SearchActivity\" />
</activity>
<activity android:name=\".SearchActivity\" android:label=\"Results\">
<intent-filter>
<action android:name=\"android.intent.action.SEARCH\" />
</intent-filter>
<meta-data android:name=\"android.app.searchable\" android:resource=\"@xml/search\" android:value=\".SearchActivity\" />
</activity>
SearchActivity的onResume():
@Override
protected void onResume() {
super.onResume();
Intent queryIntent = getIntent();
String value = queryIntent.getStringExtra(SearchManager.QUERY);
setView(value);
}
setView()方法对所有对象执行一个foreach循环,将它们添加到结果数组中,该结果数组用于列表显示的新Adapter。
ca = new CustomAdapter(this,R.layout.customadapter,resultArray);
list.setAdapter(pa);
list.invalidate();
尝试从第二个“活动”中搜索时,会出现搜索栏,我可以输入搜索值,然后将其发送-但列表不会更改(甚至键盘保持不变)。
缺少了什么?
编辑:试图使其更容易理解。
解决方法
找到了描述相同问题种类的问题。
而不是重写onResume(),我必须重写onNewIntent()
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String value = intent.getStringExtra(SearchManager.QUERY);
setView(value);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。