Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在搜索时将搜索文本保留在SearchViews文本字段中?_Java_Android - Fatal编程技术网

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()
方法?你能提供一些例子吗。我完全被搜索的东西迷住了。谢谢