如何保存活动状态

2024-01-11

我是 android 新手。我有一张单曲activity with main.xml文件。现在,我有一个scroll view在那里面main.xmlfile.当我运行我的应用程序时portrait mode当我走到底部时scroll view比我改变我的application state到横向模式比我转到滚动视图的顶部..这意味着当我们在之间切换时portrait to landscape或反之亦然activity被召回。所以需要将应用程序状态保存在portrait并恢复在landscape。那么有什么解决办法吗? 提前致谢 阿米尔汗一世


该文档做得不错解释处理配置更改的不同方法 http://developer.android.com/guide/topics/resources/runtime-changes.html,包括屏幕方向的变化。其中一种方法非常适合保存 UI 的临时状态,即将数据保存在onSavedInstanceState()方法——正如@Jason Kuang 提到的。

一般可以依靠Android来保存和恢复状态View无需您做任何特别的努力。的源代码protected method onSaveInstanceState()解释(强调):

默认实现通过调用 android.view.View.onSaveInstanceState() 来处理大部分 UI 每个实例的状态在层次结构中具有 id 的每个视图上,并通过保存当前聚焦视图的 id(所有这些视图都会恢复)通过 onRestoreInstanceState(android.os.Bundle)) 的默认实现。如果您重写此方法来保存每个单独视图未捕获的其他信息,您可能需要调用默认实现,否则准备好自己保存每个视图的所有状态。

这有点欺骗性,因为 API 文档指出EditTexts and TextView必须有android:freezesText="true"在布局 XML 文件中显式声明它们,以确保 Android 在以下情况下自动存储它们的状态:onSaveInstanceState()被调用。我最近没有对此进行测试,但这就是源代码似乎正在做的事情。因此,最好自行处理临时 UI 状态。

另一个提示:您可以明确阻止存储临时数据View通过致电setSaveEnabled(false)在那View。 (这不会影响它的孩子。)

通常,最好手动将屏幕状态保存在您的onPause()方法,并且也在onSaveInstanceState().

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

如何保存活动状态 的相关文章

  • 检查片段是否存在并重用它

    每次用户单击列表视图中的项目时 我都会使用以下代码创建一个片段 但通过这种方式 片段是在每次用户点击时创建的 我想要的是重用旧片段 如果存在 并仅重新加载其内容 不创建新片段 MagazineViewFragment fragment ne
  • Android GooglePlayServicesUtil.getErrorDialog() 不显示对话框

    我正在尝试检查是否可用Google Play 服务 APK在使用它之前 我有一个 软件包已过期的设备 日志显示 Google Play 服务已过时 需要 3225100 但找到 3136134 下面的代码将处理这种情况并显示一个对话框 提示
  • 使用 Firebase 数据填充 Android spinner

    我在填充时遇到一些问题propertyAddress从我的properties桌子到我的旋转器MaintenanceActivity 问题本身不在于代码 而在于可以使用 Firebase 控制台修改的数据库规则 目前 我的规则是这样的 ru
  • 无法调用类的无参数构造函数。向 Gson 注册此类型的 InstanceCreator 可能会解决此问题

    java lang RuntimeException Unable to invoke no args constructor for class com arch example network models NetworkPagingL
  • Android 矩形有两种不同的颜色

    如何通过使用两种不同颜色和阴影来创建矩形形状 就像上图一样 Please create a drawable file and put the below code in it
  • 更改 Android 应用程序的所有字体[重复]

    这个问题在这里已经有答案了 如何更改 Android 应用程序的整个字体 以前我看到这个帖子 https gist github com artem zinnatullin 7749076在 github 上 该解决方案仅适用于低于 api
  • 如何在无头Linux中更新Android平台工具?

    我们有一些没有安装 X Window 的 CI 主机 我知道如何使用 android 更新命令更新 SDK 但如何使用此命令更新平台工具 您可以使用以下命令 android list sdk android update sdk no ui
  • 检查 key 是否存在 firebase Android

    我想检查 firebase 数据库中是否存在密钥 例如 我想查找关键的 upvotes 以查看它是否存在 Here is an exmaple upvotes key does not exist in here 现在我尝试检查密钥 upv
  • 如何在Android中创建类似架子的视图?

    如何在android中创建一个类似书架的视图 在任意行中显示多本书 此外 它应该具有像 Moon reader 应用程序那样的水平和垂直功能 我可以编写一个水平移动的架子视图 但它不能完全工作 我使用 xml 文件来查看包含图像 文本和按钮
  • 更新到最新版本(3.1)后缺少 google-play-services_lib.jar

    我在我的应用程序中使用 Google Play 服务已经有一段时间了 没有出现任何问题 我正在使用 Eclipse 我已在 I O 后将播放服务 以及 ADT 和 SDK 更新到最新版本 但现在我无法构建我的应用程序 我已将 google
  • VS Code:无法安装以下 Android SDK 包,因为某些许可证尚未被接受

    我想做的是使用 VS Code 构建我的 flutter 应用程序 当我运行以下命令时flutter build apk FAILURE Build failed with an exception Where Build file F y
  • 最好使用的游戏/物理引擎?

    寻找用于移动游戏开发的游戏 物理引擎 iPhone 有Cocos2D http www cocos2d iphone org 我找到的安卓系统RokonAndroid http rokonandroid com 只是想知道是否还有其他人知道
  • 如何触发 Google Play 商店自动更新机制?

    简而言之 我希望我的应用程序在我向商店发布新的 APK 后立即更新 我找不到任何有关自动更新实际发生时间的信息 而且似乎变化很大 有一次是在几个小时后发生的 另一次是 12 小时没有更新 似乎是在设备重启时发生的 但是还有其他情况吗 我可以
  • 将对象传递给活动

    我可以在第一个活动中初始化对象并在所有活动中初始化对象吗 public class Calc int x int y public Calc int x int y this x x this y y public int sum retu
  • Keytool 不要求别名密码

    我正在尝试生成一个密钥库文件来签署我的 React Native Android 应用程序并将其发布到 Play 商店 我正在尝试按照本文档中的描述进行操作 https facebook github io react native doc
  • AndroidPlot:从 1 到 11 的域标签

    我已经在我的应用程序中实现了 AndroidPlot 除了 X 轴标签 从 0 到 10 之外 它工作得很好 我想显示 1 到 11 此外 Y 轴上的标签不会出现 我正在使用的代码 import java text DecimalForma
  • 如何更改Android软键盘中任意键的按键背景

    我想让键盘上的一些键与其他键不同 例如下图中的shift 删除 空格键 根据google的参考文档 我们可以通过使用 来改变按键的背景android keybackground drawable xxx in input xml 但它改变了
  • java.lang.IllegalStateException:FragmentManager 已被销毁

    活动中onResume我称之为 volley request 的方法 它获取项目列表 然后将它们加载到此活动内的 ListFragment 中 当我第一次进入活动时 一切正常 但当我重新进入活动时 ListFragment 为空 并且控制台
  • Android 中应用程序在后台运行时如何显示闪屏?

    我的应用程序有一个启动屏幕 无法避免它 因为这是出于品牌原因 我想屏蔽用户界面并在后台显示启动屏幕 就像银行应用程序那样 我应该覆盖 MainActivity 中视图的 onPause 和 onResume 吗 显现
  • 访问手机内部存储以推送 SQLite 数据库文件

    我正在使用 Netbeans 和 java 开发我的 Android 应用程序 当我使用模拟器时 我可以访问文件资源管理器并通过访问以下路径将 SQLite 数据库插入到设备内存中 data data com example helloan

随机推荐