片段替换在 searchview 上触发 onQueryTextChange

本教程将介绍片段替换在 searchview 上触发 onQueryTextChange的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

片段替换在 searchview 上触发 onQueryTextChange 教程 第1张

问题描述

这就是我浏览我的应用程序的方式:

用列表打开片段

按在搜索视图中输入的文本过滤列表

点击列表项(列表片段被详细片段替换)

向后导航(详细片段被列表片段替换)

当我从列表导航到细节片段时,我想将搜索视图的当前过滤器保留在字符串变量中.我在执行 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的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。