我有一个带有ListView和clickeable项的Activity,用于在单独的Activity中显示每个项的详细信息。我的主要活动有一个SearchView来过滤这些项目。我希望能够点击一个项目(打开一个新活动),当我按下后退按钮时,我的searchView保持不变(使用我的过滤列表)。
我实现了我的搜索视图:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
// Inflate menu to add items to action bar if it is present.
inflater.inflate(R.menu.menu_main, menu);
final MenuItem searchItem = menu.findItem(R.id.action_search);
mSearchView = (SearchView) searchItem.getActionView();
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Log.w("SEARCH", "SearchOnQueryTextSubmit: " + query);
mQuery = query;
if (!mSearchView.isIconified()) {
mSearchView.setIconified(true);
}
searchItem.collapseActionView();
return false;
}
@Override
public boolean onQueryTextChange(String s) {
Log.w("SEARCH", "SearchOnQueryTextChanged: " + s);
mQuery = s;
contactAdapter.getFilter().filter(s);
return false;
}
});
我试图在onResume或同一onCreateOptionsMenu上实现一些东西来检查mQuery是否有东西。
if (!TextUtils.isEmpty(mQuery)) {
final String thisQuery = mQuery;
mSearchView.post(new Runnable() {
@Override
public void run() {
Log.d(TAG, "onResume: setting mQuery to searchView");
Log.d(TAG, "mQuery: "+thisQuery);
MenuItemCompat.expandActionView(searchItem);
mSearchView.setQuery(thisQuery, true);
}
});
}
尝试了两种方法但没有成功。在onCreateOptionsMenu上,如果我调试它,将调用SearchView并使用我的查询进行过滤,但在此之后,另一个调用带有空搜索!我不知道它来自何处。
有任何帮助吗?谢谢!