一个 Activity 中的两个 SearchView 和屏幕旋转

2023-11-27

我在一个 xml 布局中有两个 SearchView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

    <SearchView
        android:id="@+id/my_first_custom_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </SearchView>

   <SearchView
        android:id="@+id/my_second_custom_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/my_first_custom_view" >
   </SearchView>

</RelativeLayout>

我通过 setContentView() 将该布局膨胀到我的 MainActivity。然后我调用方法 setQuery() 为彼此。

一切正常,直到屏幕旋转。当我旋转屏幕时,每个 searchView 都有文本“World”,而不是“Hello”和“World”。

 public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SearchView firstSearchView = (SearchView)     findViewById(R.id.my_first_custom_view);
        SearchView secondSearchView = (SearchView) findViewById(R.id.my_second_custom_view);

        firstSearchView.setQuery("Hello!", false);
        secondSearchView.setQuery("World", false);
    }
}

有人可以解释出了什么问题吗?


The SearchView使用膨胀布局文件产生的视图作为其内容。结果,所有的SearchViews用于活动布局(如您的案例)的内容将具有相同 ID 的视图。当 Android 尝试保存状态来处理配置更改时,它会看到EditTexts来自SearchViews具有相同的 id,它将为所有这些恢复相同的状态。

处理这个问题最简单的方法是使用Activity's onSaveInstanceState and onRestoreInstanceState像这样:

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    // state for the first SearchView
    outState.putString("sv1", firstSearchView.getQuery().toString());
    // state for the second SearchView
    outState.putString("sv2", secondSearchView.getQuery().toString());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    // properly set the state to balance Android's own restore mechanism
    firstSearchView.setQuery(savedInstanceState.getString("sv1"), false);
    secondSearchView.setQuery(savedInstanceState.getString("sv2"), false);
}

也看看这个相关问题.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个 Activity 中的两个 SearchView 和屏幕旋转 的相关文章

  • 如何使用我的 Apple 开发者 ID 签署 .jar 文件

    我有一个java可执行文件jar我需要使用我的 Apple 开发者 ID 进行签名的文件 我不打算通过应用程序商店分发它 我将通过我的网站直接向客户分发该应用程序 我不打算绕过 Gatekeeper Signing the app和我的de
  • Java.lang.NoClassDefFoundError:com/fasterxml/jackson/databind/exc/InvalidDefinitionException

    我已经更新了我的依赖项 就像您在评论中所说的那样 我现在有这个 org springframework context ApplicationContextException Unable to start embedded contain
  • Nativescript 中本机传感器的可访问性

    我决定选择在 Nativescript 跨平台 IOS Android 中实现应用程序 或者相应地使用 java swift 制作 真正的 本机应用程序 放弃明显的 1 代码库与 2 代码库讨论 我不确定 Nativescript 的局限性
  • 在 webview 片段中实现后退按钮

    我想在我的应用程序中实现后退按钮 我正在使用每个片段显示不同的网络视图 现在 如果我按后退按钮 无论我在哪里 它都会关闭应用程序 我希望它能像浏览器一样返回 我有我的MainActivity java fragment1 java等直到fr
  • Spring Hibernate 4 支持

    我正在使用 Hibernate 4 CR1 我的应用程序之前使用 Spring hibernate 支持 版本 3 我还没有找到任何相关信息 是否有任何迹象表明 Spring 何时 或哪个版本 将提供对 Hibernate 4 的支持 UP
  • 使用 ADB 更改 Android 壁纸?

    我想知道是否可以使用我的笔记本电脑从 ADB 更改 Android 壁纸 我不知道是否存在任何命令 或者我是否需要将图片复制到文件夹或编辑文本文件 如果可以的话 我需要通过 ADB 解决这个问题 谢谢大家 您只需要启动正确的壁纸设置意图 由
  • 如何将 csv/文本文件从 Android 手机发送到 WiFi 打印机?

    我正在开发一个 Android 应用程序 我应该从数据库中获取 csv txt 文件格式的数据 然后我必须将文件发送到 wifi 打印机 有谁知道我如何开始这样做 答案终于很简单 Socket client new Socket IP PO
  • 我的递归条件是否正确计算二叉树高度?

    我想在你的帮助下知道我的代码是对还是错 因为遗憾的是我无法运行它来检查 没有编译错误 我想做的是找到二叉树的高度 当然 树不必是平衡的 二叉树中的每个节点可以有两个节点作为子节点 http en wikipedia org wiki Bin
  • 如何将相机居中以使标记位于屏幕底部? (谷歌地图API V2 Android)

    单击标记时 相机的默认行为是将其置于屏幕中央 但由于我通常在信息窗口中有很长的文本描述 因此实际更改相机位置以使标记位于屏幕的底部会更方便 屏幕 使信息窗口位于屏幕中央 我认为我应该能够通过重写 onMarkerClick 函数来做到这一点
  • 权限拒绝:开放提供商

    我创建了一个自定义内容提供程序 更多应用程序将访问该内容提供程序 我已在提供程序 AndroidManifest xml 文件中包含了权限标签 在第二个应用程序中 我包含了 use permissions 标签 但没有成功 Logcat 向
  • 如何在同一行实例化对象并调用setter?

    如果我有一个Employee具有默认构造函数的类 private String firstName public Employee 和一个二传手 public void setFirstName String firstName this
  • Android Path addArc 在canvas中两点之间

    我正在尝试在 android 中绘制弧线 在IOS中 用这个方法确实很简单 path addArcWithCenter radius startAngle endAngle clockwise 在android中 我有3个点 我的圆的中心
  • 纹理映射和光照顶点着色器错误 Java OpenGL

    我正在尝试将纹理映射到 3D 立方体并尝试编写着色器以使其具有照明和纹理 我尝试过只编写纹理着色器并且它有效 我还尝试过仅将 3D 值设置为红色的照明着色器 并且该照明着色器也可以工作 但当我尝试将两者结合起来时 我遇到了问题 我在下面提供
  • 从 java 反射中隐藏我的安全密钥

    下面的类是我用于加密的安全密钥提供程序 public class MySecretKey private String key 2sfdsdf7787fgrtdfg cj5 Some Util methods goes on Here 首先
  • Android 切换按钮

    通过遵循这个article http ww1 mokasocial com 我能够创建一个由图像组成的切换按钮 我的开关没有任何文字 只有开 关图像 当我的切换按钮创建时 它会被拉伸并失去其比例 如何使其保留其原始大小 这些是我使用的图像
  • JarSplice 的命令行参数?

    罐子接头 http ninjacave com jarsplice允许将 jar 文件以及其他依赖项和库聚合到一个可执行 jar 文件中 但是 我的可执行 jar 需要两个命令行参数 当我调用 JarSplice jar 时 这两个参数似乎
  • 如何在 JTextArea 中设置部分文本颜色?

    我想为文本区域中的特定行设置颜色 到目前为止我发现的是以下内容 Declarations private final DefaultStyledDocument document private final MutableAttribute
  • JShell 如何查找变量或结果的类型

    如何在 JShell 中查找变量或表达式结果的类型 正在尝试 Java 中的按位运算符 jshell gt byte b 5 lt lt 1 Error incompatible types possible lossy conversio
  • JSON 解析为 Java - Android 应用程序

    我需要在 Java Android 应用程序中解析 json 字符串的帮助 JSON 文件的文本 data columns location id name description latitude longitude error type
  • 无法声明接口:资源繁忙

    我正在使用 USB4Java 低级版本 并且基本上是根据这段代码工作的here http www mets blog com java usb communication usb4java 我在 Ubuntu 中工作 遇到了有关权限的问题

随机推荐

  • heroku 推送错误:“无法检测 rake 任务”

    我正在尝试部署一个基本应用程序 但它不起作用 使用 git push heroku master 我收到此错误消息 remote Could not detect rake tasks remote ensure you can run b
  • JPEG 字节顺序对编码有何影响?

    我目前正在做一个涉及图片的大项目 我遇到的大问题之一是图片的字节顺序 jpeg 更清楚 我一直认为在我们的现代世界中我们不必担心这个问题 但现在我不确定 我做什么 我向 IP 摄像机发出 HTTP 请求 摄像机返回给我一个字节数组 我使用以
  • 断言比较两个对象列表 C#

    我目前正在尝试学习如何使用单元测试 并且我已经创建了 3 个动物对象的实际列表和 3 个动物对象的预期列表 问题是如何断言检查列表是否相等 我尝试过 CollectionAssert AreEqual 和 Assert AreEqual 但
  • boost asio iostream - 如何获取本地IP地址

    这是我的问题 我正在使用 boost asio ip tcp iostream 连接到服务器 boost asio ip tcp iostream s IP 1237 现在我想检索我自己的本地 IP 地址 我在谷歌深处找到了如何使用sock
  • Mayavi 可以渲染透明背景的人物场景吗?

    我正在使用 mayavi mlab 生成网格图 并希望背景不透明度为 0 或透明 这可能吗 如果您的目标是将 mayavi 图集成到 matplotlib 图中 这是可能的 您可以使用mlab screenshot获取 RGBA 值的 nu
  • 如何使用CSS组合混合混合模式和隔离?

    我有一个带有红色背景的父元素 我想要一个 h2 元素将一些单词与背景混合 其他单词在 span 标签内 不 我下面的例子不起作用 如何让它发挥作用 bg red background red blend mix blend mode dif
  • 结束日期大于开始日期验证android

    我有两个 EditText 一个带有开始日期 另一个带有结束日期 我需要进行验证并检查结束日期是否大于开始日期 我不知道我该怎么做 在我的代码中 我以天为单位计算两个日期之间的差异 现在我还需要检查结束日期是否大于开始日期 这是我的代码 E
  • 构造函数中的 C++ 通用引用和返回值优化 (rvo)

    为什么在具有通用引用参数的构造函数的类中不会发生右值优化 http coliru stacked crooked com a 672f10c129fe29a0 include
  • 如何更改 Switch 小部件的大小

    在冰淇淋三明治中Switch引入了显示开关滑块的小部件 我像这样添加了开关
  • 防止 IIS 在任务结束之前终止该任务

    我正在构建一个日志库 将所有内容存储在 Azure 表上 写入该表显然需要很多时间 永远不会超过 1 秒 但仍然太多让用户等待 因此 Log 方法返回一个 LogResult 实例 这是该类 public class LogResult p
  • 在另一个 React 项目中使用一个 React 项目

    我想在另一个 React 项目中使用一个 React 项目 但我想更好地解释自己 我有一个 React 项目 我想在我的电脑上放置更多其他 React 项目 我不想将我的项目放在公共 npm 中 如何在更大的 React 项目中使用这些独立
  • 线程中断未结束输入流读取上的阻塞调用

    我正在使用 RXTX 从串行端口读取数据 读取是在按以下方式生成的线程中完成的 CommPortIdentifier portIdentifier CommPortIdentifier getPortIdentifier port Comm
  • 处理 JFrame 会导致内存泄漏吗?

    我正在编写一个测试程序 如下所示 当用户单击按钮 A 时 它会打开 50 个 JFrame 当用户单击按钮 B 时 它会处理通过单击按钮 A 显示的所有 JFrame I find that the memory does not decr
  • 在 iOS8 Safari 中,只读输入处理不正确

    在 Safari iOS8 中 聚焦于日期或时间输入会打开日期或时间选择器 并允许编辑只读输入的内容 当专注于文本输入时 底部会出现一个工具栏 其中包含上一个 下一个和 完成 按钮 并且在点击 完成 或点击页面上的另一个输入之前不会消失 当
  • 使用存储函数创建数据库

    我是 PostgreSQL 新手 想使用存储函数创建数据库 For ex CREATE OR REPLACE FUNCTION mt test dbname character varying RETURNS integer AS BODY
  • 如何在Python上匹配除下划线之外的所有字母数字

    我一直在尝试用正则表达式匹配除下划线之外的所有字母数字字符 我目前正在使用r a zA Z0 9 但我想知道是否可以使用 w并排除 Thanks 对就像那样 W Where W是相反的 w
  • fs.writeFile() 不返回回调

    我正在尝试将包含用户身份验证数据的文件写入磁盘 为了实现这一点 我编写了以下函数 function writeAuthFile data success fail var fs require fs fs writeFile auth js
  • 允许匿名访问 Google Apps 脚本网络应用程序(Google Apps 帐户)

    我的 Google 云端硬盘中有一个电子表格 我想通过网络应用程序共享该电子表格 我希望脚本以我的身份运行并允许每个人访问网络应用程序 在我的个人 Google 帐户 非 Google App 帐户 中完成此操作后 我会在 Apps 脚本的
  • 为什么 UITableViewCell 中的渐变层不覆盖整个框架?

    我尝试用长 UIView 制作一个标准的上下渐变 但还没有满 笔尖是 UITableViewCell 的一部分 所以我无权访问viewDidLayoutSubviews as in 这个线程 我试过打电话contentView layout
  • 一个 Activity 中的两个 SearchView 和屏幕旋转

    我在一个 xml 布局中有两个 SearchView