查看SharedPreference变量是否为null

时间:2013-08-06 19:06:02

标签: java android sharedpreferences

全局变量:

SharedPreferences prefs;
SharedPreferences.Editor editor;

onDestory()期间保存:

editor.putInt("InfType", rgTypeOfInf.getCheckedRadioButtonId()); //saving value

onCreate()期间被调用:

rgTypeOfInf = (RadioGroup) mFrame2.findViewById(R.id.rgType);
rgTypeOfInf.check(prefs.getInt("InfType", 2131230725)); //retrieving the value

如何查看我的应用加载时查看保存的变量是否存在或者是null。如果存在,检查无线电组的单选按钮,否则如果它是null,默认检查无线电组[0]位置?

我的XML文件:

    <RadioGroup
        android:id="@+id/rgType"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" >
        <RadioButton
            android:id="@+id/rbBridge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="Bridge" />
        <RadioButton
            android:id="@+id/rbTunnel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tunnel" />
        <RadioButton
            android:id="@+id/rbHighway"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Highway" />
    </RadioGroup>

2 个答案:

答案 0 :(得分:2)

所以如果它的空

,你已经有了'默认'设置

请参阅,rgTypeOfInf.check(prefs.getInt("InfType", 2131230725));有2131230725作为pref的默认值(如果不存在)。

所以,你可以把它设置为-1,然后说

int type = prefs.getInt("InfType", -1);

if (type == -1){
   //was never set
} else{
  //...
}

答案 1 :(得分:1)

把:

int checked = -1;
RadioGroup rg = (RadioGroup) findViewById(R.id.rgType);
for(int i = 0; i < rg.getChildCount(); i++){
  if(((RadioButton)rg.getChildAt(i)).isChecked()){
     checked = i;
  }
}
editor.putInt("InfType", checked);

提取:

int InfType = prefs.getInt("InfType", -1);
RadioGroup rg = (RadioGroup) findViewById(R.id.rgType);
if(InfType > -1) {
  ((RadioButton)rg.getChildAt(InfType)).toggle();
} else{
  ((RadioButton)rg.getChildAt(0)).toggle();
}

没有经过测试

用于:

http://developer.android.com/guide/topics/ui/controls/radiobutton.html http://developer.android.com/reference/android/content/SharedPreferences.html#getInt(java.lang.String,%20int)