我想保存在android中单击的单选按钮的状态。当用户转到下一个问题时,它必须保存状态,因此当他回到之前的状态时,它必须显示所选的选项。
答案 0 :(得分:0)
使用共享首选项,要保存单选按钮的状态,您可以在其他活动中检索数据。
这是java类:
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class ABCD extends Activity{
private int ival;
public static int glob=1;
static SharedPreferences sPref;
private SharedPreferences.Editor sE;
RadioGroup rbMain;
RadioButton rb1,rb2,rb3,rb4,rb5;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
rbMain = (RadioGroup) findViewById(R.id.rgMain);
rb1 = (RadioButton)findViewById(R.id.radio1);
rb2 = (RadioButton)findViewById(R.id.radio2);
rb3 = (RadioButton)findViewById(R.id.radio3);
rb4 = (RadioButton)findViewById(R.id.radio4);
rb5 = (RadioButton)findViewById(R.id.radio5);
sPref = getSharedPreferences("Pref",0);
sE = sPref.edit();
ival = sPref.getInt("Pref", 0);
if(ival == R.id.radio1){
rb1.setChecked(true);
glob=1;
}else if(ival == R.id.radio2){
rb2.setChecked(true);
glob=2;
}else if(ival == R.id.radio3){
rb3.setChecked(true);
glob=3;
}else if(ival == R.id.radio4){
rb4.setChecked(true);
glob=4;
}else if(ival == R.id.radio5){
rb5.setChecked(true);
glob=5;
}
rbMain.setOnCheckedChangeListener(new OnCheckedChangeListener() {
int state = 0;
public void onCheckedChanged(RadioGroup group, int checkedId) {
if(checkedId == R.id.radio1){
sE.clear();
sE.putInt("Pref", checkedId);
sE.apply();
}else if(checkedId == R.id.radio2){
sE.clear();
sE.putInt("Pref", checkedId);
sE.apply();
}else if(checkedId == R.id.radio3){
sE.clear();
sE.putInt("Pref", checkedId);
sE.apply();
}else if(checkedId == R.id.radio4){
sE.clear();
sE.putInt("Pref", checkedId);
sE.apply();
}else if(checkedId == R.id.radio5){
sE.clear();
sE.putInt("Pref", checkedId);
sE.apply();
}
}
});
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
sPref = getSharedPreferences("Pref",0);
sE = sPref.edit();
ival = sPref.getInt("Pref", 0);
if(ival == R.id.radio1){
rb1.setChecked(true);
glob=1;
}else if(ival == R.id.radio2){
rb2.setChecked(true);
glob=2;
}else if(ival == R.id.radio3){
rb3.setChecked(true);
glob=3;
}else if(ival == R.id.radio4){
rb4.setChecked(true);
glob=4;
}else if(ival == R.id.radio5){
rb5.setChecked(true);
glob=5;
}
}
}
这是我的XML布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RadioGroup android:layout_width="wrap_content"
android:layout_gravity="center_horizontal" android:layout_height="wrap_content"
android:layout_weight="1" android:id="@+id/rgMain">
<RadioButton android:layout_width="wrap_content"
android:id="@+id/radio1" android:layout_height="wrap_content"
android:checked="true" android:text="1" android:textColor="@color/back">
</RadioButton>
<RadioButton android:id="@+id/radio2"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="2" android:textColor="@color/back">
</RadioButton>
<RadioButton android:layout_width="wrap_content"
android:id="@+id/radio3" android:layout_height="wrap_content"
android:text="3" android:textColor="@color/back">
</RadioButton>
<RadioButton android:layout_width="wrap_content"
android:id="@+id/radio4" android:layout_height="wrap_content"
android:text="4" android:textColor="@color/back">
</RadioButton>
<RadioButton android:layout_width="wrap_content"
android:id="@+id/radio5" android:layout_height="wrap_content"
android:text="5" android:textColor="@color/back">
</RadioButton>
</RadioGroup>
</LinearLayout>
</ScrollView>
而且,这可以帮助您做任何您需要的事情。