- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个带有 fragment 的 Activity 来列出一些数据。我已经使用 SearchView(操作栏上漂亮的搜索字段)实现了搜索。
搜索工作正常,用户输入数据,按下搜索按钮,结果按预期过滤。
我的问题是我无法将搜索“重置”回所有结果。我已经尝试在 searchManager 对象上设置 Dismiss 和 Cancel 监听器,但是永远不会调用 onDismiss 和 oncancel 方法。
这是我对 list 的操作:
<activity
android:name=".ClientesActivity"
android:label="@string/title_activity_clientes"
android:parentActivityName=".MenuPrincipalActivity"
android:launchMode="singleTop" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="MenuPrincipalActivity" />
<meta-data android:name="android.app.searchable"
android:resource="@xml/cliente_searchable" />
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
</activity>
ClientesActivity 上的方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
clientesService = new ClientesService(getBaseContext());
setContentView(R.layout.activity_clientes);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, ClienteFragment.newInstance(), ClienteFragment.class.getSimpleName())
.commit();
}
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
if(Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
clientesService.findByNameLike(query);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.clientes, menu);
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(true);
return true;
}
它没有显示监听器,因为我在没有任何效果后回滚了更改。但基本上 o 在 onCreateOptionsMenu 方法的“return true”之前添加了监听器。一开始没什么特别的,只是匿名类覆盖了实现了 onDismiss 方法的接口(interface),试图将一些日志放在那里,但从未调用过该方法。
最佳答案
看看 android.widget.SearchView#setOnQueryTextFocusChangeListener
。据我所知,当显示 searchview 时 hasFocus 将为 true,并且在用户点击 upstack/back 箭头关闭搜索之前不会再次调用 false。奇怪的是,我从来没有看到 android.widget.SearchView#setOnCloseListener
调用
或者,实现 onOptionsItemSelected 并调用 android.app.Activity#onSearchRequested() 来触发搜索对话框,以便使用那些已注册的回调方法。
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case R.id.search:
onSearchRequested();//delegate upstream
break;
default:
return super.onOptionsItemSelected(item);
}
}
Invoking the search dialog里面不是很清楚文档。我没有在文档中看到它的声明。但似乎如果您只使用搜索小部件,则不会触发 SearchManager 回调。
关于android - 如何使用 android SearchManager 重置搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24082037/
如何更改搜索管理器右侧的图标?默认图标是一个放大镜,但我见过一个应用程序显示“OK”而不是放大镜! 根据我的需要,放大镜图标不太好。我使用 SearchManager 来显示输入单词的历史记录。所以一
我已经在线阅读了所有关于构建搜索界面和添加自定义建议的文档……但我仍然不清楚这是如何工作的。该文档说我必须“为您的建议构建一个表(例如在 SQLiteDatabase 中)并使用所需的列格式化该表”。
我非常认真地研究了 sitecore 的搜索功能,直到现在我一直使用以前的开发人员使用的功能。我正在研究一个问题,其中某些谓词似乎没有在下面的代码中起作用: public IEnumerable Se
下面是获取searchmanagerinstance和调用trigger search的代码:同样适用于 startsearch 调用而不是 triggersearch String searchQu
我有一个带有 fragment 的 Activity 来列出一些数据。我已经使用 SearchView(操作栏上漂亮的搜索字段)实现了搜索。 搜索工作正常,用户输入数据,按下搜索按钮,结果按预期过滤。
我已经实现了一个带有最近搜索建议的搜索界面,如 documentation 中所述, 由于某种原因,历史图标来自错误的主题(深色而不是浅色。 我当前的任务是更改此图标。我相信我的主题是正确的,所以我试
我已经根据文档和其他问题检查并仔细检查了我的 list 。我不明白为什么 setSearchableInfo 返回 NullPointerException 主 Activity .java @Ove
我正在关注这个relatively simple tutorial关于如何手动启动 SearchableActivity 以便我可以从中获取 result。 他基本上是将base Activity(A
我关注了this Android guide为了向 Activity 添加搜索栏。设置如下所示: res/menu/activity_main.xml: res/xml/searchable
我已经成功地将我的应用程序的国家/地区搜索集成到全局搜索工具中,现在我正尝试在搜索建议旁边显示每个国家/地区的国旗。在我的应用程序中搜索以这种方式工作,但我当然可以控制列表及其 View 绑定(bin
我在任何地方都找不到如何通过 searchManager.getSearchableInfo() 使用支持的 v7 appcompat 库。 @Override public boolean onCr
用例: Activity A 是主要 Activity 。而 Activity B 是 SearcActivity (SearchManager)。 Activity B 是 ListActivity
我是一名开发 Android 应用程序的新手,以下是该应用程序的第一个屏幕。我希望我的应用程序使用该搜索对话框执行搜索。 为此,我关注了http://developer.android.com/gui
我是一名优秀的程序员,十分优秀!