首页
学习
活动
专区
工具
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
  • 2-SIII-Android数据固化之Xml的Pull解析和存储

    形如: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

    66130

    解决安卓7.0谷歌Play商店无法使用问题

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

    4.7K30

    Android系统信息与安全机制

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

    76520

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

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

    1.8K40

    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--安卓网络编程之

    69520

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

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

    94900

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

    Eclipse安卓使用Activity模板快速新建Activity 2天前 浏览: 27 评论: 1 使用android studio的安卓开发者可能发现它和eclipse+ADT大同小异,个人用完android...下面是android的ACTIVITY生命周期的图示: 安卓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系统上都能运行。保持代码清晰和模块化,这有助于维护和扩展。重视用户反馈,根据用户需求和市场趋势不断迭代应用。...只有这才才能做好安卓开发工作,以上就是我今天得所有内容,如有修正欢迎评论区留言。

    15610

    机器人有寿命吗? | 拔刺

    --- 拔出你心中最困惑的刺!--- 在这个用过即弃的时代,不要让你的求知欲过期。 今日拔刺: 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.5K20

    这就是鸿蒙系统?

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

    96520

    《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.8K10

    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
    领券