你可以把SharedPreferences想象成一个巨大的地图来存放你所有的东西,但除非你在做一些奇怪的事情,否则你应该从同一个巨大地图(即同一个SharedPreferences)中存储和检索数据。您正在做的是创建命名的共享首选项。我建议只使用默认值。如果你想了解更多这意味着什么
check out this question.
因此,在您的情况下,如果您要存储5个值,您可以在相同的范围内这样做
SharedPreferences
只需提供以下不同的密钥:
SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor mSharedPreferencesEditor = mSharedPreferences.edit();
mSharedPreferencesEditor.putInt("numberX", numberX);
mSharedPreferencesEditor.putInt("numberY", numberY);
mSharedPreferencesEditor.commit()
mSharedPreferences.getInt("numberX", numberX);
mSharedPreferences.getInt("numberY", numberY);
你可以很容易地
get
和
put
将不同的密钥转换为相同的sharedPrefs。您的代码将变为:
SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor mSharedPreferencesEditor = mSharedPreferences.edit();
int value1 = mSharedPreferences.getInt("number1", 0);
int value2 = mSharedPreferences.getInt("number2", 0);
int value3 = mSharedPreferences.getInt("number3", 0);
int value4 = mSharedPreferences.getInt("number4", 0);
int value5 = mSharedPreferences.getInt("number5", 0);
...
mSharedPreferencesEditor.putInt("number1", value1);
mSharedPreferencesEditor.putInt("number2", value2);
mSharedPreferencesEditor.putInt("number3", value3);
mSharedPreferencesEditor.putInt("number4", value4);
mSharedPreferencesEditor.putInt("number5", value5);
mSharedPreferencesEditor.commit();
您关于所有值为0的问题可能有所不同。我完全希望你对getInt的所有调用都是0,因为你是
从不
在sharedPrefs中存储0以外的任何内容。看起来你只是在加零和加零。我不确定你想在这里做什么,但在调用此函数之前,通过调用将数字1-5分配给0以外的值肯定会有所帮助
mSharedPreferencesEditor.putInt(number);
在sharedPrefs对象上,如下所示:
SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor mSharedPreferencesEditor = mSharedPreferences.edit();
//for example, for the key "number5"
mSharedPreferencesEditor.putInt("number5", value5);