java在保存信息时切换类的“标准”方式是什么?
切换到第二节课后,我在第一节课上保存信息时遇到了一个问题,基本上是这样的
[int] a = 25;
Intent asd = new Intent(getApplicationContext(), secondActivity.class);
startActivity(asd);
但是,当我在第二个活动中开始意图返回第一节课时,我的问题就发生了,比如:
Intent jkl = new Intent(getApplicationContext(), firstActivity.class);
startActivity(jkl);
因为当我返回到那个类时,int a
返回到它的初始值,而不是我在切换类之前修改的值。
我在类范围中将'a'的值设置为20,然后在onResume()
范围的onClickListener
中将其更改为25
我是不是换错了班?为什么价值没有节约?对我来说,它不应该将值重置为它的初始值是有道理的,因为它的初始值不是在onStart()
/onCreate()
方法中设置的
# 1 楼答案
当你通过代码跳转到firstActivity时
这不是回到firstActivity,这些代码创建了一个新的firstActivity!所以参数就是它的初始值。你可以打电话
finish()
来结束你的第二个活动# 2 楼答案
在活动之间切换时存储数据有很多选择,我将在这里列出其中的几个
您可以将您的值存储在共享首选项中
可以将值存储在sqlite中
当要存储的值是键值对而不是复杂对象时,使用第一个选项。有时,人们通过将对象转换为json字符串来存储复杂对象
但是sqlite是存储复杂对象的首选方法,尤其是使用诸如greenDao、ORMlite等ORM框架。因为您可以使用这些库直接在sqlite数据库中存储和检索java对象
SharedReference存储将键值对保存在文件中,您可以为这些文件提供
MODE
,如果指定private
模式,则该文件将仅可供您的应用程序访问。如果希望其他应用程序可以访问该文件,则需要指定为public
另一方面,Sqlite是专为移动设备设计的基于SQL的数据库存储的精简版。它们被认为是服务器中使用的更快、更轻的SQL版本
我将在这里解释如何在特定情况下使用共享偏好
SharedReference
首先,可以使用如下上下文对象创建SharedReferenceFile
在这里创建时,您可以为文件指定
ACCESS MODE
接下来,为了在这个文件中存储值,您可以通过调用SharedReference对象上的
edit()
函数来获得文件的SharedPrefences.Editor
对象现在,您可以像这样将
int a = 25
键值对添加到编辑器中然后需要调用
apply()
函数才能写入文件编辑。应用()
然后,检索所需的全部操作就是调用SharedReference对象上的getInt()函数
getInt()
函数中的第二个参数是默认值,以防文件中的键“a”没有值因此,您可以将a的值存储在活动的
onStop()
中的sharedpreffile中,然后在活动的onStart()
中再次检索它