恢复后在 SearchView 中保留查询 activity
Persist query in SearchView after resuming activity
我有一个 Activity,带有 ListView 和可点击的项目,可以在单独的 Activity 中显示每个项目的详细信息。我的主要 activity 有一个 SearchView 来过滤这些项目。我希望能够点击一个项目(打开一个新的 activity),当我按下后退按钮时,我的 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 并过滤我的查询,但紧接着,另一个调用会出现空搜索!我不知道这是从哪里来的。
有什么帮助吗?谢谢!
很高兴这对您有所帮助:
您需要的是How to maintain the previous state of an activity。在此处检查所选答案 -
我有一个 Activity,带有 ListView 和可点击的项目,可以在单独的 Activity 中显示每个项目的详细信息。我的主要 activity 有一个 SearchView 来过滤这些项目。我希望能够点击一个项目(打开一个新的 activity),当我按下后退按钮时,我的 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 并过滤我的查询,但紧接着,另一个调用会出现空搜索!我不知道这是从哪里来的。
有什么帮助吗?谢谢!
很高兴这对您有所帮助:
您需要的是How to maintain the previous state of an activity。在此处检查所选答案 -