Java SharedReferences和int
我对JAVA和Android Studio还相当陌生。我遇到了一个关于SharedReferences API的问题,在保存密钥中的int值时遇到了问题 所以,基本上我是从一个日历对象中请求DAY_OF_YEAR,它是一个int,然后我想将该int存储到SharedReferences中,并有意地将其传递给第二个活动,但是当我在第二个活动中请求该值时,它总是返回nullJava SharedReferences和int,java,android,Java,Android,我对JAVA和Android Studio还相当陌生。我遇到了一个关于SharedReferences API的问题,在保存密钥中的int值时遇到了问题 所以,基本上我是从一个日历对象中请求DAY_OF_YEAR,它是一个int,然后我想将该int存储到SharedReferences中,并有意地将其传递给第二个活动,但是当我在第二个活动中请求该值时,它总是返回null private SharedPreferences mPreferences; private int SAVED_DAY_V
private SharedPreferences mPreferences;
private int SAVED_DAY_VALUE;
private int mCurrentDayNumber;
private int mDayState;
OnCreate:
Calendar calendar = Calendar.getInstance();
mDayCurrentNumber = calendar.get(Calendar.DAY_OF_YEAR);
// Both lines ask SAVED_DAY_VALUE to be String
mDayState = getPreferences(MODE_PRIVATE).getInt(SAVED_DAY_VALUE, 0);
mPreferences.edit().putInt(SAVED_DAY_VALUE, mCurrentDayNumber);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent secondActivityIntent = new Intent(MainActivity.this, SecondActivity.class);
secondActivityIntent.putExtra("PassDay", mDayState);
我想我的变量搞乱了。谢谢你帮助像我这样的新手。getInt()
和putInt()
都有第一个参数key
,key应该是string,但是你已经定义了SAVE\u DAY\u VALUE
一个int
所以它应该是一个字符串
类似于字符串SAVE\u DAY\u KEY=“currentDay”
检查
基本上,当您将数据保存到SharedReference中时,您需要密钥和实际数据。密钥始终为字符串,仅用于访问数据
例如,让我们在SharedReference中输入一些int,然后访问它
存储数据
要存储数据,应首先初始化SharedReferences
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);
Editor editor = pref.edit();
然后在编辑器中放入数据(第一个参数是键,第二个参数是实际数据)
检索数据
用于检索您刚才调用的数据
pref.getInt("SAVED_DAY_VALUE", 0);
其中,如果未找到键“SAVED_DAY_value”,则0为默认值
希望它有帮助,欢迎使用Android:)调用
commit
或apply
?哦,对了,谢谢,我忘记了.apply()方法:(听起来你存储值只是为了能够在第二个活动中访问它。如果这是真的,请注意,通过Intent传递值并使用getIntent()实际上已经足够了)在获取值的第二个活动中。SharedReferences不是用来在组件之间传递数据的临时存储,而是用来持久存储值。我实际上需要这两个功能。我需要我的应用程序能够记住首次启动后一年中的哪一天,其目的只是检查值是否真正传递到我的第二个活动是的,非常感谢,我想我知道我的钥匙出了什么问题。非常感谢,先生。我显然忘记了.apply()方法。帮了我很多忙:)随时,先生:)
pref.getInt("SAVED_DAY_VALUE", 0);