gpt4 book ai didi

android - 恢复 Activity 后在 SearchView 中保留查询

转载 作者:行者123 更新时间:2023-11-30 01:23:51 27 4
gpt4 key购买 nike

我有一个带有 ListView 和可点击项目的 Activity ,以在单独的 Activity 中显示每个项目的详细信息。我的主要 Activity 有一个 SearchView 来过滤这些项目。我希望能够点击一个项目(打开一个新 Activity ),当我按下后退按钮时,我的 searchView 保持不变(与我的过滤列表)。

我是这样实现我的搜索 View 的:

@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 .在此处检查所选答案 -

关于android - 恢复 Activity 后在 SearchView 中保留查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36721529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com