Java 如何在搜索时将搜索文本保留在SearchViews文本字段中?
我的操作栏中有一个Java 如何在搜索时将搜索文本保留在SearchViews文本字段中?,java,android,Java,Android,我的操作栏中有一个SearchView。当用户搜索查询并按下键盘上的“Go”按钮时,搜索意图将传递到“我的活动”,但搜索字段将折叠,查询文本将丢失。我怎样才能防止这种情况发生?我希望文本保留在搜索字段中,直到用户明确清除 谢谢您可以将搜索请求存储在字符串变量中,或者在搜索事件发生时使用getQuery()单击“Go”按钮时存储在中(setOnSearchClickListener),然后将它们写回 编辑(根据您可以在本答案下方阅读的问题) 如果每次搜索后都重新创建活动,如何存储查询字符串?如果您
SearchView
。当用户搜索查询并按下键盘上的“Go”按钮时,搜索意图将传递到“我的活动”,但搜索字段将折叠,查询文本将丢失。我怎样才能防止这种情况发生?我希望文本保留在搜索字段中,直到用户明确清除
谢谢您可以将搜索请求存储在字符串变量中,或者在搜索事件发生时使用getQuery()单击“Go”按钮时存储在中(setOnSearchClickListener),然后将它们写回 编辑(根据您可以在本答案下方阅读的问题) 如果每次搜索后都重新创建活动,如何存储查询字符串?如果您有一些服务在应用程序的运行时是持久的,您可以将其存储在那里,但这并不优雅。最简单的方法是使用。这是一个持久(键、值)存储,您可以在整个应用程序中使用它来存储和检索值 您与发起共享引用
SharedPreferences prefs = getSharedPreferences("mysharedprefenrences", 0);
字符串可以是您想要的任何内容。每当您使用相同的字符串在应用程序中创建SharedReferences对象时,您将再次访问这些值
要获取字符串(如搜索查询),请使用
String aString = prefs.getString("searchQuery", "")
如果尚未设置查询(在本例中为“”),则使用第二个字符串作为默认值
设置setOnSearchClickListener后,可以使用编辑器存储查询
Editor editor = prefs.edit();
editor.putString("searchQuery", queryString);
editor.commit();
现在,下次创建活动时,将找到存储的字符串而不是默认字符串。我的解决方案非常简单。显然,我没有为活动正确设置
android:launchMode
。理想情况下,提供搜索功能的活动应该是单个顶部,这样用户就不必在单击“后退”按钮时向后浏览之前的所有搜索。我的不是。因此,每次搜索时,都会启动搜索活动的一个新实例并将其添加到视图堆栈中
我将其添加到正确活动下的清单文件中
android:launchMode="singleTop"
你好,卢卡斯,我在我的活动中添加了
onQueryTextChange
和onquerytexsubmit
方法,并用于SearchView。setOnSearchClickListener
将侦听器设置为this
。我可以在每次按键和每次提交文本时获取事件,但似乎在创建搜索时,我的活动会创建一个新实例,我不能再引用这些相同的变量。我应该在哪里编写SearchView.getQuery()
方法?你能提供一些例子吗。我完全被搜索的东西迷住了。谢谢