全局变量:
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>
答案 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)