2013-07-29 30 views
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(); 
      } 
     }); 
+0

入住这PrefUtils类https://gist.github.com/john1jan/b8cb536ca51a0b2aa1da4e81566869c4 – John

回答

12

您可以使用共享偏好如下

//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

+0

你如何让那些没有背景的地方? – g00dy

+0

@ g00dy - 默认情况下,它使用与活动关联的上下文,默认情况下使用getBasecontext() –

+0

,但如果将其称为Activity的另一面,会发生什么? – g00dy

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

保存价值

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

     } 

您可以使用密钥作为共享偏好名

相关问题