Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SharedReferences和int_Java_Android - Fatal编程技术网

Java SharedReferences和int

Java 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

我对JAVA和Android Studio还相当陌生。我遇到了一个关于SharedReferences API的问题,在保存密钥中的int值时遇到了问题

所以,基本上我是从一个日历对象中请求DAY_OF_YEAR,它是一个int,然后我想将该int存储到SharedReferences中,并有意地将其传递给第二个活动,但是当我在第二个活动中请求该值时,它总是返回null

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);