片段替换在 searchview 上触发 onQueryTextChange
本教程将介绍片段替换在 searchview 上触发 onQueryTextChange的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
这就是我浏览我的应用程序的方式:
用列表打开片段
按在搜索视图中输入的文本过滤列表
点击列表项(列表片段被详细片段替换)
向后导航(详细片段被列表片段替换)
当我从列表导航到细节片段时,我想将搜索视图的当前过滤器保留在字符串变量中.我在执行 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}
导航时怎么防止搜索视图被系统清除?
谢谢.
推荐答案
经过 2 天的谷歌搜索,我得到了绝对能帮助你的解决方案.
我刚刚从 onCreateOptionMenu()
剪切和粘贴
代码到 onPrepareOptionMenu()
我不知道为什么会这样,我认为 searchView
的侦听器不会是 NULL
以您可以通过这种方式更改代码.
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
getSherlockActivity().getSupportMenuInflater().inflate(R.menu.menu_all_order, menu);
searchView = (SearchView) menu.findItem(R.id.menu_all_order_search).getActionView();
searchView.setInputType(InputType.TYPE_CLASS_NUMBER);
searchView.setQueryHint("Enter Order No");
searchView.setOnQueryTextListener(this);
}
和删除:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
谢谢:)
好了关于片段替换在 searchview 上触发 onQueryTextChange的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。