在切换到我的第二堂课后,我在第一堂课时保留信息的问题,基本上就是这样。
[int] a = 25;
Intent asd = new Intent(getApplicationContext(), secondActivity.class);
startActivity(asd);
但是当我在第二个活动中启动一个Intent来将返回到第一个类时,我的问题就出现了,如下所示:
Intent jkl = new Intent(getApplicationContext(), firstActivity.class);
startActivity(jkl);
因为当我返回那个类时,int a
返回到它的初始值,而不是我在切换类之前修改的值。
我在类范围内将'a'的值设置为20,然后在onClickListener
范围内的onResume()
中将其更改为25。
我是否以错误的方式切换课程?为什么价值不能保存?我不应该将值重置为初始值,因为它的初始值未在on Start()
/ onCreate()
方法中设置。
答案 0 :(得分:0)
在活动之间切换时有很多存储数据的选项,我会在这里列出其中几个,
您可以将值存储在共享首选项中
您可以将值存储在sqlite中。
当您要存储的值是键值对而不是复杂对象时,将使用第一个选项。有时,人们通过将对象转换为json字符串来存储复杂对象。
但是sqlite是存储复杂对象的首选方式,特别是使用像greenDao,ORMlite等ORM框架,因为您可以使用这些库直接在sqlite DB中存储和检索java对象。
Sharedpreference存储将密钥值对保存在文件中,您可以为这些文件提供MODE
,如果指定private
模式,则该文件只能由您的应用程序访问。如果要使文件可供其他应用程序访问,则需要指定为public
。
我将在此解释如何针对您的特定情况使用共享偏好
<强> SharedPreference 强>
首先,您可以使用像这样的上下文对象
创建sharedPreference文件SharedPreferences mySharedPref =
context.getSharedPreferences(PREFERENCE_FILE_NAME, Context.MODE_PRIVATE);
在创建时,您可以为文件指定ACCESS MODE
。
接下来,为了在此文件中存储值,您可以通过调用sharedPreference对象上的SharedPrefences.Editor
函数来获取该文件的edit()
对象。
SharedPreferences.Editor editor = mySharedPref.edit();
现在您可以将int a = 25
键值对添加到编辑器中。
editor.putInt("a", a);
然后你需要调用apply()
函数才能写入文件。
editor.apply();
然后检索你需要做的就是在sharedPreference对象上调用getInt()函数。
SharedPreferences mySharedPref = context.getSharedPreferences(PREFERENCE_FILE_NAME, Context.MODE_PRIVATE);
mySharedPref.getInt("a",0);
getInt()
函数中的第二个参数是一个默认值,以防该键没有值&#34; a&#34;在文件中。
您可以做的是将a的值存储在您的活动的onStop()
中的共享预览中,并在您的活动的onStart()
中再次检索
答案 1 :(得分:0)
当您按代码跳转到firstActivity时
Intent jkl = new Intent(getApplicationContext(), firstActivity.class);
startActivity(jkl);
它不会回到firstActivity,这些代码会创建一个新的firstActivity!所以参数将是它的初始值。你可以调用finish()
来关闭你的secondActivity。