当前位置: 首页 > news >正文

android - fragment 数据丢失?状态丢失?

最佳答案

一些状态丢失的例子:

1. 假设您有一个按钮和一个 TextView 。在代码中,你已经定义了初始值为 0 的整数 i,它通过单击按钮递增 1,并且它的值显示在 TextView 中。假设你已经按下按钮 5 次,那么 textview 将被设置为 0。也就是说 Integer 在屏幕变化时丢失了它的值

解决方案:覆盖 onSaveInstanceState 并输入整数值。然后在 onResume 或 onCreate 方法中保留该整数的值。

2. 假设您有一个待办事项 ListView 。用户动态添加到该 ListView 中的dos。假设用户添加了 3 个项目,然后在屏幕旋转时(或者如果应用程序重新启动), ListView 将变为空。

解决方案: 再次在 onSaveInstanceState 中,放入 ArrayList。 (列表可以实现为“Serializabe”或“Parcelable”,并且可以作为一个整体存储。您不需要存储 ListView 的每个项目)。然后在 onResume 或 onCreate 方法中,获取该 ListView 。

3.屏幕旋转时,屏幕中的所有编辑文本都将变为空。

我对状态丢失的简单理解是,只要配置发生变化(屏幕旋转或应用重启), Activity 的整个生命周期都会被调用。因此,任何未保存的内容都将丢失。

好吧,这让我想起任天堂的退出屏幕消息,“任何未保存的内容都将丢失”。

android onSaveInstanceState

当Android应用程序的活动被系统销毁时,系统会调用onSaveInstanceState()方法来保存活动的当前状态。该方法获取一个Bundle对象作为参数,可以用来存储和传递数据。当活动被重新创建时,可以通过onRestoreInstanceState()方法来恢复之前保存的状态。

以下是一个示例代码:

@Override
protected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);// 在此处保存需要的状态数据到outState中outState.putString("key", "value");
}@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);// 在此处恢复之前保存的状态数据String value = savedInstanceState.getString("key");
}

http://www.lryc.cn/news/143376.html

相关文章:

  • Git基本操作
  • Nginx配置文件详解
  • 【0217】stats collector(统计信息收集器)进程启动原理(1)
  • 【应用层】网络基础 -- HTTPS协议
  • 实验篇—— 基因家族Motif 分析
  • Linux拓展之阻止或禁用普通用户登录
  • Linux系统USB摄像头测试程序(四)_视频旋转及缩放
  • 大模型+学习机,是概念游戏还是双向奔赴?
  • linux怎么查看用户属于哪个组
  • 邂逅JavaScript
  • Android 中 Fragment判空
  • 软考高级系统架构设计师系列论文八十八:财务数据仓库系统的设计与实现
  • fastdeploy部署多线程/进程paddle ocr(python flask框架 )
  • 【图论】拓扑排序
  • 自动化备份方案
  • win11出现安全中心空白和IT管理员已限制对此应用的某些区域的访问
  • github实用指令(实验室打工人入门必备)
  • 6. 激活层
  • AIGC ChatGPT 制作地图可视化分析
  • 2023-08-24 LeetCode每日一题(统计参与通信的服务器)
  • 前端实习day35
  • Linux安装jupyter notebook
  • 【猿灰灰赠书活动 - 03期】- 【RHCSA/RHCE 红帽Linux认证学习指南(第7版) EX200 EX300】
  • 当 Tubi 遇到 Ruby
  • 【C++从0到王者】第二十四站:多态的底层原理
  • Java从入门到精通24==》数据库、SQL基本语句、DDL语句
  • 学习ts(十)装饰器
  • 如何在 Opera 中启用DNS over HTTPS
  • STM32 F103C8T6学习笔记13:IIC通信—AHT10温湿度传感器模块
  • QT基础使用:组件和代码关联(信号和槽)