我有一个包含列表的活动。通过Android onSearchRequested()我实现了搜索。 结果显示为另一个Activity中具有相同适配器的列表。到目前为止工作正常。
此外,我希望能够从第二个活动中搜索,在同一个列表中显示新结果。
我的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's onResume():
@Override
protected void onResume() {
super.onResume();
Intent queryIntent = getIntent();
String value = queryIntent.getStringExtra(SearchManager.QUERY);
setView(value);
}
setView()方法通过所有对象执行foreach循环,将它们添加到结果数组中,该结果数组用于列表显示的新适配器。
ca = new CustomAdapter(this, R.layout.customadapter, resultArray);
list.setAdapter(pa);
list.invalidate();
当尝试从第二个Activity搜索时,搜索栏出现,我可以输入我的搜索值,发送它 - 但列表不会改变(甚至键盘都会保留)。 有什么遗漏?
编辑:试图让它更容易理解。
答案 0 :(得分:4)
找到了that question,它描述了同样的问题。
我必须覆盖onNewIntent()
,而不是覆盖onResume()@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String value = intent.getStringExtra(SearchManager.QUERY);
setView(value);
}