如何在安卓中使用Shared Preference保存和获取整数值?

4
我想在共享首选项中保存和获取雪密度的静态整数值,并在用户选择其他值时更改。
我的代码:
public static int mSnowDensity;
AlertDialog.Builder mABuilder = new AlertDialog.Builder(AAA.this);
final CharSequence mCharSequence[] = { "Low", "Medium", "High" };
mABuilder.setTitle("Set Density of Snow");
mABuilder.setSingleChoiceItems(mCharSequence,
        WallpaperServices.mDensitySnow,
        new android.content.DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                if (which == 2) {

                    mSnowDensity = 90;
             /*I Want to save mSnowDensity Value In Shared Preferences */
                } else if (which == 1) {

                     mSnowDensity = 60;
                } else {

                     mSnowDensity = 30;
                }

                dialog.dismiss();
            }
        });

请查看这个PrefUtils类 https://gist.github.com/john1jan/b8cb536ca51a0b2aa1da4e81566869c4 - John
5个回答

16

您可以按以下方式使用共享首选项

//To save
SharedPreferences settings = getSharedPreferences("YOUR_PREF_NAME", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("SNOW_DENSITY",mSnowDensity);
editor.commit();

//To retrieve
SharedPreferences settings = getSharedPreferences("YOUR_PREF_NAME", 0);
int snowDensity = settings.getInt("SNOW_DENSITY", 0); //0 is the default value

getSharedPreferences()是Context类的一个方法。如果您在Activity或Service内部(这些类扩展自Context),则可以像这个片段中那样使用它。否则,您应该使用getApplicationContext()获取上下文,然后调用getSharedPreferences()方法。

如需更多选项,请参阅文档:http://developer.android.com/guide/topics/data/data-storage.html#pref


你如何从任何地方获取没有上下文的内容? - g00dy
@g00dy - 默认情况下,它使用与活动相关联的上下文,这与使用getBasecontext()获取的上下文相同。 - Sunil Mishra
默认情况下是的,但如果在“Activity”之外调用它会发生什么? - g00dy
在那种情况下,您将获得您所描述的上下文 ;) - Sunil Mishra
所以,请编辑您的答案,以便如果它被接受并且某个时刻有人看到它 - 当将答案粘贴到任何给定的位置时,答案可以是正确的 :) - g00dy
特别感谢提到“getSharedPreferences()是Context类的一个方法”。我们都倾向于忘记这一点,尤其是在游戏开发中使用SurfaceViews时! - user3833732

1
保存在SharedPreferences中:
private final String PREFS_NAME  = "filename";
private final String KEY_DENSITY    = "den";

Context  ctx   = getApplicationContext();
SharedPreferences sharedPreferences = ctx.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();

editor.putInt(KEY_DENSITY, mSnowDensity);
editor.commit();

获取值的方法:

Context ctx = getApplicationContext();
String strSavedValue = null;
SharedPreferences sharedPreferences = ctx.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);

strSavedValue = sharedPreferences.getInt("den", anyDefaultValue);

1

保存偏好设置中的值

private void SavePreferences(String key, int value) {
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt(key, value);
        editor.commit();
    }

从偏好设置中获取值

 private void showPreferences(String key){
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        int savedPref = sharedPreferences.getInt(key, 0);

       }

您可以使用键作为共享首选项名称。

1

初始化 我们需要一个编辑器来编辑和保存共享偏好设置中的更改。以下代码可用于获取共享偏好设置。

 SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 :- for private mode
Editor editor = pref.edit();

存储数据
editor.putBoolean("key_name", true); 
editor.putString("key_name", "string value"); 
editor.putInt("key_name", "int value"); 
editor.putFloat("key_name", "float value");
editor.putLong("key_name", "long value");  
editor.commit(); 

获取数据
pref.getString("key_name", null); // getting String
pref.getInt("key_name", -1); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean

清除或删除数据。
editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email

editor.commit(); // commit changes


editor.clear();
editor.commit(); // commit changes

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接