gpt4 book ai didi

java - 恢复 android 的搜索 View 小部件的状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:43 24 4
gpt4 key购买 nike

我的操作栏中有一个搜索 View ,我想在方向改变后恢复查询。我怎样才能做到这一点?使用 SearchView.setQuery(query, false); 从 bundle 设置查询不起作用,因为 searchview 在展开后立即将其查询设置为 ""

这是我的onActivityCreated中的相关代码:

if(savedInstanceState != null && savedInstanceState.containsKey(BUNDLE_KEY_SEARCH))
mCurFilter = savedInstanceState.getString(BUNDLE_KEY_SEARCH);

这里是我的onSaveInstanceState:

savedInstanceState.putString(BUNDLE_KEY_SEARCH, mCurFilter);
super.onSaveInstanceState(savedInstanceState);

那么我怎样才能恢复它的状态,因为我无法使用 setQuery 来恢复它的状态?感谢大家

最佳答案

是的,可以恢复搜索 View 小部件的状态:

使用以下代码保存搜索查询文本:

private String mSearchQuery;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();

menuInflater.inflate(R.menu.search_menu, menu);

// Associate searchable configuration with the SearchView
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();

searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));

if(mSearchQuery != null){
searchView.setIconified(true);
searchView.onActionViewExpanded();
searchView.setQuery(mSearchQuery, false);
searchView.setFocusable(true);
}

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){

@Override
public boolean onQueryTextSubmit(String query) {
return false;
}

@Override
public boolean onQueryTextChange(String newText) {
mSearchQuery = newText;
return false;
}
});

return true;
}

@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("searchQuery", mSearchQuery);
super.onSaveInstanceState(outState);
}

然后在 Activity 的 OnCreate() 方法中,添加以下行:

    if(savedInstanceState != null){
mSearchQuery = savedInstanceState.getString("searchQuery");
}

关于java - 恢复 android 的搜索 View 小部件的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22582201/

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