首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在改变安卓系统活动时保持ArrayList的值

在改变安卓系统活动时保持ArrayList的值,可以使用以下方法:

  1. 使用Bundle保存ArrayList:在Activity的onSaveInstanceState方法中,将ArrayList以键值对的形式保存到Bundle对象中,然后在onCreate方法中恢复该ArrayList。这样可以确保当Activity被销毁后重新创建时,ArrayList的值不会丢失。
代码语言:txt
复制
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putSerializable("list", arrayList);
}

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

    if (savedInstanceState != null) {
        arrayList = (ArrayList<String>) savedInstanceState.getSerializable("list");
    }
}
  1. 使用SharedPreferences保存ArrayList:将ArrayList转换为字符串,然后使用SharedPreferences将字符串保存起来。在下次需要恢复ArrayList时,从SharedPreferences中取出字符串并重新转换为ArrayList。
代码语言:txt
复制
// 保存ArrayList到SharedPreferences
SharedPreferences sharedPrefs = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPrefs.edit();
Set<String> set = new HashSet<>(arrayList);
editor.putStringSet("list", set);
editor.apply();

// 从SharedPreferences中恢复ArrayList
Set<String> set = sharedPrefs.getStringSet("list", null);
if (set != null) {
    arrayList = new ArrayList<>(set);
}
  1. 使用ViewModel保存ArrayList:使用Android Architecture Components中的ViewModel来保存ArrayList的实例。ViewModel在配置变更(如屏幕旋转)时会保持数据的一致性,以便Activity可以重新获取到相同的ArrayList实例。

首先,在build.gradle文件中添加以下依赖:

代码语言:txt
复制
implementation "androidx.lifecycle:lifecycle-viewmodel:2.4.0"

然后,创建一个继承自ViewModel的类,在该类中定义一个ArrayList变量,并提供相应的getter和setter方法。

代码语言:txt
复制
public class MyViewModel extends ViewModel {
    private ArrayList<String> arrayList;

    public void setArrayList(ArrayList<String> arrayList) {
        this.arrayList = arrayList;
    }

    public ArrayList<String> getArrayList() {
        return arrayList;
    }
}

在Activity中使用ViewModel:

代码语言:txt
复制
private MyViewModel viewModel;

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

    viewModel = new ViewModelProvider(this).get(MyViewModel.class);

    if (savedInstanceState != null) {
        ArrayList<String> savedArrayList = savedInstanceState.getStringArrayList("list");
        viewModel.setArrayList(savedArrayList);
    }

    // 使用viewModel.getArrayList()获取ArrayList实例
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putStringArrayList("list", viewModel.getArrayList());
}

通过以上方法,可以在改变安卓系统活动时保持ArrayList的值,并且不涉及到特定的云计算品牌商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

vue中@change兼容问题

需求描述 需求:选择日期,当日期改变,则页面相应该日期某些事件渲染 条件: 移动端 vue框架 2....描述如下: 使用vue做移动端,由于需求需要,需要在页面某处添加一个日期选择控件。...由于 @change特性是当监听到数据发生变化时则执行,因此差异便是暴露出来: :选择完年月日,点击确定后,数据变化,监听事件起作用; iOS:点击选择日期,选择年,监听到数据变化一次,执行一次...解决方案 讨论到此,我们必须想办法先解决一个问题:如何在iOS端,阻止掉每一次选择都自动执行 selectDate问题。...但,所谓小人得志不可取,兴高采烈时候发现在机上挂掉了。原因是在机上选完以后, @blur事件并不会触发,除非选择完成之后,点击别的区域来触发此事件。

2.1K60
  • 解决7.0谷歌Play商店无法使用问题

    测试机型:小米5X 系统版本:7.1 测试工具:go谷歌安装器、改变SELinux模式、访问外国网站工具 说明:以上工具需要root...权限,请保持手机已经获取root。...由于谷歌严格审查制度,商店內软件不但不存在恶意插件和病毒,而且一些国际版软件非常清爽、简洁、无广告,:WiFi万能钥匙大家自己下载去体会。...系统升级7.1后,在使用过程中出现了一些问题,谷歌商店一直卡在”正在核对信息……”界面,经过几天研究问题终于解决了。...我怀疑是升级7.1后,服务框架和账户管理版本太旧,也有可能是谷歌服务架构出错,需要升级新版本。卸载旧版谷歌4件套,使用“go谷歌安装器”重新安装谷歌4件套。

    4.6K30

    2-SIII-Android数据固化之XmlPull解析和存储

    形如:xxx组成闭合标签 res目录下xml想必大家都是否熟悉,它们最终都是在代码中被读取并解析发挥效果 SharedPreferences是以Xml形式存储数据...,就连AndroidManifest注意一看也是Xml 可以说xml涉及到了很多方面,我们并不陌生,Xml最大好处就是解耦,容易复用和更换 Xml解析有Pull解析、Sax解析和Dom...pull解析.png Pull解析概述 Pull是内置,基于事件触发解析器 Pull解析器小巧轻便,解析速度快,简单易用 主动从解析器中获取事件,可以在满足了需要条件后不再获取事件,结束解析...对象用来记录信息 mWeapon = new WeaponXml(); //获取第一个属性...: /** * 备份Xml--当然也可以备份任意实体类作为Xml,比如短信,联系人 */ private void backUpXml() { ArrayList

    65630

    Android系统信息与安全机制

    双十一快要来临了,三个版本已近更新完毕,打包上线,所以最近在疯狂写博客、欢迎大家前来讨论问题,互相学习o!!!...今天和大家分享一下—Android系统信息与安全机制– 1、系统信息获取 /********************设备配置信息相关********************/ /** *主板 *...*/ publicstaticfinalStringBUILD_HOST=Build.HOST; 2.PackageManager使用 PackageManager是提供来负责所有安装APP;...内核安全机制—-Uid、访问权限控制 Android继承了Linux,所以安全机制也继承过来了,通常情况下只有system、root用户才能访问到系统文件,一般用户无法访问 第五道防线: 虚拟机沙箱机制...—-沙箱隔离 APP是运行在虚拟机中,所有才有了沙箱机制,每个app都有一个与之对应uid,每个app也运行在单独app中,所以一个应用崩溃也不会导致其他应用奔溃。

    75720

    android调用webservice接口获取信息

    有一篇博客上讲了如何基于CXF搭建webservice,service层接口会被部署到tomcat上,这一篇我就讲一下如何在中调用这些接口传递参数。...e.printStackTrace(); String msg=e.getMessage(); System.out.println(msg); } 4.若webservice接收不到android传来...6.要关闭windows防火墙 7.当时我还遇到了一个问题,就是当传递信息复杂,比如传递list型一个自定义类,会出现问题,当时我是重写了ListAdapter类,如下所示: package com.adapter... private ArrayList mData=new ArrayList(); //private ArrayList mDate = new ArrayList(); public Map<String...mHolder.goodsSellNum.getTag(); /*mData.get(position).put("goodsSellNum",s.toString());// 当EditText数据发生改变时候存到

    99820

    2018年最优秀9个Android Material Design Apps!

    那么,从日常生活中,与人们关系最密切手机应用角度来讲,2018年有哪些优秀材料设计主题手机应用呢? 1. Airbnb ?...其中提到,为了与最近网络改版相匹配,移动版Gmail将在收件箱视图中获得传统桌面功能,密度选项和快速附件。 3. ...作为2017年谷歌材料设计奖得主之一,momondo应用程序很好展示了如何在手机应用程序中体现材料设计基本原理。并且,跟随谷歌材料设计这个主题,也在不断激发新手机应用设计方向。...下载量:20,844 产品特色: 悬浮按钮设计 重复交互设计 Asana设计在维护其品牌视觉形象同时,也并没有因为其设计而分散产品核心功能。...随着谷歌材料设计理念更新,各大开发商在应用设计方面也紧跟潮流,从设计,配色以及交互各方面都在不断更新和完善。希望这9 大优秀材料设计应用程序能给你产品带来新启发。

    1.8K40

    深度思考:拥有多年开发经验你为何会被多家大厂拒绝?开发还有什么能学习

    接下来给大家举例Android开发需要学习一些技能及知识点: Android开发需要学习技能 基础知识 基础知识确实很多,如果日常积累不够的话确实比较头晕,比如我承认我只在 APP 升级时候搞过一个前台...ContentProvider 这些都是必须 8.Looper,Handler,MessageQueue 关系 9.主线程为什么是主线程,如何开启线程,线程池和常用四种线程池 他们特点和使用场景...腾讯 如何在给定整数数组中找到重复数字? 小米 如何在未排序整数数组中找到最大和最小? 字节跳动 在Java中如何从给定数组中删除多重复制? 百度 常用数据结构有哪些?...B站 一个数组插入删除查找和链表效率对比?如果一个数组要反复插入删除怎么优化降低时间复杂度? 腾讯 arrayList底层原理 滴滴 字节跳动 如何在一次遍历中找到单个链表中值?...有句话叫做基础不牢,地动山摇,大家可以制定一个学习计划: 第一步:书籍 我之前入手第一本书就是android疯狂讲义,七八百页,其实我感觉我们不用全部都学,比如说动画、视频、传感器先可以不学,疯狂讲义有些设计不是很合理

    94300

    4--网络编程之XML总汇篇

    形如:xxx组成闭合标签 res目录下xml想必大家都是否熟悉,它们最终都是在代码中被读取并解析发挥效果 SharedPreferences是以Xml形式存储数据...,就连AndroidManifest注意一看也是Xml 可以说xml涉及到了很多方面,我们并不陌生,Xml最大好处就是解耦,容易复用和更换 ?...效率 备注 Pull解析 事件驱动 否 是 高 专有 Sax解析 事件驱动 否 否 高 无 Dom解析 直接全部加载 是 否 低 解析构建dom树 准备待解析xml: 3000 九方玄玉 ---- 一、Pull解析概述 Pull是内置...e.printStackTrace(); } ---- ---- 后记:捷文规范 1.本文成长记录及勘误表 项目源码 日期 备注 V0.1--无 2018-10-15 4--网络编程之

    69320

    程序算法|PHP、、C++程序代码交流

    Eclipse使用Activity模板快速新建Activity 2天前 浏览: 27 评论: 1 使用android studio开发者可能发现它和eclipse+ADT大同小异,个人用完android...下面是androidACTIVITY生命周期图示: ACTIVITY生命周期四个阶段 开始Activity:在这个阶段依次执行3个生命周期方法:onCreate()、onStart()和 响应触摸屏事件...html、xml和json这三种格式,那么本篇随笔将讲解一下json这个知识点,包括如何通过json-lib和gson这两个json解析库来对解析我们json数据,以及如何在我们Android客户端解析来自服务器端...你发现你工程只能在放一个固定文件夹(Workspace)里,改变默认存储路径会导致工程创建失败,下面的方法可以改变默认路径。...如果你第一次 开发建立多个Activity 2周前 (04-01) 浏览: 45 评论: 0 作为一个APP,建立多个activity是必须,就像windows软件有多窗口一样; 开发建立多个

    2.2K10

    HttpPost不适用于Python CGI服务器

    避免在主线程执行长时间运行操作,使用异步处理机制,AsyncTask或Kotlin协程。下文将是我开发时候遇到得问题总结以及解决方案一一作了详细说明。...问题背景一名 Android 开发人员遇到了一个问题,当使用 HttpPost 向其 Python CGI 服务器提交数据,程序会无限期地挂起,直到开发者长按模拟器上返回按钮并强制退出程序。...order_submit=0"; HttpPost post = new HttpPost(URI);​ List kvPairs = new ArrayList...综合所说,在做开发,要考虑向后兼容性,确保应用在不同版本Android系统上都能运行。保持代码清晰和模块化,这有助于维护和扩展。重视用户反馈,根据用户需求和市场趋势不断迭代应用。...只有这才才能做好开发工作,以上就是我今天得所有内容,如有修正欢迎评论区留言。

    15410

    机器人有寿命吗? | 拔刺

    --- 拔出你心中最困惑刺!--- 在这个用过即弃时代,不要让你求知欲过期。 今日拔刺: 1、机器人有寿命吗? 2、越来越多用户想换iPhone,原因何在?...机器人控制板芯片等和手机电脑是一样,手机电脑会出现卡死现象,机器人同样会出现,到时候就不是人工智能而是人工智障了。 越来越多用户想换iPhone 原因何在?...而在阵营攻城略地同时,高端机型表现相对没那么亮眼。风光一HTC几乎退出了市场,三星近年来表现也不前几年强势,而华为虽然发展迅猛,主要优势并不是高端旗舰。...这就是不同消费偏好不同而已。的确有越来越多用户买了iPhone,同时也有越来越多iPhone用户转向。原因何在?其他操作系统都被这两家干掉了,换来换去也就这两个选择罢了。...而消费者需求是会发生改变,有些选择了iPhone用户换换口味就会选择某款手机。同理,也有大量手机用户,用腻了就会想要换成iPhone。

    1.3K40

    Android训练课程(Android Training) - 构建你第一个应用

    开发包SDK工具可以很容易创建一个由默认项目文件夹和文件组成项目。...Target SDK 目标SDK 指示了你测试过应用可以支持最高版本系统(仍然是用API级别指定) 当一个新版本变得可用,你应该测试你应用在新版本并且更新这个去匹配最新...1.改变文件夹到SDK安装目录 tools/ 下。 2.执行 android list targets 这将打印出你SDK中你已经下载所有可用平台列表。...系统使用这个去实现默认导航行为,比如在4.1(API等级16)或者更高 Up navigation。...当它打开,在文本框输入一个消息,点击发送,这时消息出现在第二个activity。 图表2 。 在最终应用程序里两个activity,运行在4.4 这就是了,你完成构建里你第一个应用!

    2.2K00

    高质量又免费图标资源都在这

    图标的尺寸 在移动端 iOS 规范中 2 倍图下最适合人点击区域大小为 48*48px, iOS 功能图标尺寸为 48 加或减 4 倍数; Android 功能图标尺寸为 48 加或减 8 倍数...为什么 iOS 是 4 倍数?因为 2 倍图适配 3 倍图要乘以 1.5, 适配 1 倍图要除以 2, 并且保证 1 倍/ 2 倍/ 3 倍图尺寸都是偶数,能满足要求最小数是 4; ?...为什么 Android 是 8 倍数?开发中最小单位是1dp(1dp=2px)同时也要满足 2 倍图适配 1 倍图和 3 倍图都是整数, 所以要是 8 倍数。...图标的形状构成 所有的图标都建议使用基础图形进行组合,运用布尔运算绘制,以保持图标整体合理性,尽量不要使用钢笔工具勾勒(除非是细节点),钢笔绘制随心所欲不严谨,美感大打折扣。 ? 4....设定一个角度规范所有元素按倍数改变,角度常用度数 15°、22.5°、30°、45°、60°、90°等会比较清晰。 像素对齐 ? 图标的线条一定要紧贴像素网格,不然边缘会虚化模糊。 ?

    1.4K20

    《QQ音乐小电台》小程序开发

    前端异常上报,当小程序发生脚本错误,或者 api 调用失败,会触发 onError 并返回错误信息,获取设备信息,方便后期定位问题 音乐播放控制bug&fix 下,暂停不能继续播放问题 原因是暂停再播放...IOS、播放暂停切歌 IOS,机下播放过程中先暂停在切换歌曲,发现播放歌曲为原先歌曲。...同步播放状态 机下播放一首歌曲且同时打开新页面(播放页),同步上一页面播放态,wx.getBackgroundAudioPlayerState在有歌曲播放情况下status返回为2,且状态返回...5、列表渲染 wx:key 当数据改变触发渲染层重新渲染时候,会校正带有 key 组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身状态,并且提高列表渲染效率。...wx:key 以两种形式提供 6、模版 WXML提供模板(template),可以在模板中定义代码片段,然后在不同地方调用 7、事件 key 以bind或catch开头,然后跟上事件类型,bindtap

    4.7K10

    这就是鸿蒙系统?

    我手头使用是一部华为Mate 20 pro手机,快三年间了。作为一名数码爱好者,对于系统升级非常积极,每次收到系统更新通知,都会在第一间升级。...应用商店里应用,也没有见少,差不多都是应用程序。程序运行在鸿蒙系统上,非常欢畅,一点也没感觉到运行在一个不是操作系统上。...这也说明,看似没有变化升级策略,非常有效。人虽然喜新厌旧,但对于改变习惯,却非常抵触。...鸿蒙操作系统与华为之前定制版本如此之象,对于应用支持又是如此完美,令人浮想联翩,是不是又一个套壳系统?关于鸿蒙系统是套壳言论,网络上已经很多,无需赘述。...本来开发者为了跨桌面、、iOS系统开发,头大牛,为了减少开发和维护成本,想出各种跨平台方案。现在多了一个鸿蒙系统要适配,而app既可以在鸿蒙上运行,又能在系统上跑,为什么要开发两套?

    95220

    2021Android 面试宝典:实战记录+回答技巧,让每个知识知其所以然!(持续更新中)

    Java 中 ArrayList 和 Linkedlist 区别? List a=new ArrayList()和 ArrayList a =new ArrayList()区别?...要对集合更新操作ArrayList 和 LinkedList 哪个更适合?...Android 程序与 Java 程序区别? 启动应用后,改变系统语言,应用语言会改变么?...很多朋友靠着这些内容进行复习,拿到了BATJ等大厂offer,这个资料也已经帮助了很多开发者,希望也能帮助到你。...关于面试刷题,我个人也准备了一套系统面试题,帮助你举一反三: 总结 改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习热情,一步一步构建自己完整知识体系,

    1.6K20

    挥别web移动端开发差异和经典坑

    解决: iOS 5.0 以及之后版本,滑动有定义有两个 auto 和 touch,默认为 auto。...touch: 使用具有回弹效果滚动, 当手指从触摸屏上移开,内容会继续保持一段时间滚动效果。继续滚动速度和持续时间和滚动手势强烈程度成正比。同时也会创建一个新堆栈上下文。...,我们期望仅在value变化时,才触发oninput事件,而在中文输入下,未选词按键也会触发oninput事件。...时间:201908 部分机器点击键盘发送相同内容 描述:部分机,oppo 快速点击键盘发送,会发出2条一样内容,防抖与节流均不生效; 时间:201907 微信公众号 在微信授权回调带#...URL跳转会出现空白 描述:手机,在微信授权回调函数中进行跳转至URL不能带有#,但#号可放置在结尾。

    2.9K20
    领券