【发布时间】:2014-06-25 23:59:16
【问题描述】:
这就是我浏览我的应用程序的方式:
- 用列表打开片段
- 按在搜索视图中输入的文本过滤列表
- 点击列表项(列表片段被详细片段替换)
- 向后导航(详细片段被列表片段替换)
当我从列表导航到细节片段时,我想将搜索视图的当前过滤器保留在字符串变量中。我在执行 onQueryTextChange 时存储了 searchview 的值。
问题: 我无法存储实际的过滤器值,因为当我从列表导航到详细信息时会调用 onQueryTextChange,因为某些内容清除了搜索视图的文本。
// ...
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
searchReceived(s);
return true;
}
});
// ...
public void searchReceived(String searchQuery)
{
this.stateHolder.searchQuery = searchQuery;
// more code...
}
当我想在返回时恢复过滤器时,它只使用空字符串进行过滤,因为错误的值存储在 this.stateHolder.searchQuery 中。
堆栈:
onQueryTextChange():139, EmployeeListFragment$1 {com.example.exampleapp.fragment}
onTextChanged():1153, SearchView {android.widget}
access$2000():92, SearchView {android.widget}
onTextChanged():1638, SearchView$11 {android.widget}
sendOnTextChanged():7408, TextView {android.widget}
setText():3816, TextView {android.widget}
setText():3671, TextView {android.widget}
setText():80, EditText {android.widget}
setText():3646, TextView {android.widget}
setQuery():511, SearchView {android.widget}
onActionViewCollapsed():1250, SearchView {android.widget}
collapseItemActionView():1662, ActionBarView$ExpandedActionViewMenuPresenter {com.android.internal.widget}
collapseItemActionView():1258, MenuBuilder {com.android.internal.view.menu}
clear():521, MenuBuilder {com.android.internal.view.menu}
doInvalidatePanelMenu():789, PhoneWindow {com.android.internal.policy.impl}
run():221, PhoneWindow$1 {com.android.internal.policy.impl}
导航时如何防止搜索视图被系统清除?
谢谢。
【问题讨论】:
-
你找到解决这个问题的办法了吗?
-
@starrystar 我在这里发布了一个可能的解决方法:stackoverflow.com/questions/23544382/…
标签: android android-fragments save state searchview