【问题标题】:How to save RadioGroup State using SharedPreferences如何使用 SharedPreferences 保存 RadioGroup 状态
【发布时间】:2014-03-03 20:53:11
【问题描述】:

我创建了一个代表一个问题并有 4 个答案选择(a、b、c 和 d)的单选组,因此我为单选组创建了 4 个单选按钮,它工作正常,但我想要的是当我离开活动并返回时保持检查答案,这里是代码:

公共类 P2 扩展 Page1 {

RadioGroup rg2 ;
RadioButton r2a , r2b , r2c , r2d ;
Button b2n , b2b ;
TextView tv ;
int count ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_p2);

    rg2 = (RadioGroup) findViewById(R.id.RG2);
    r2a = (RadioButton) rg2.getChildAt(0);
    r2b = (RadioButton) rg2.getChildAt(1);
    r2c = (RadioButton) rg2.getChildAt(2);
    r2d = (RadioButton) rg2.getChildAt(3);
    b2n = (Button) findViewById(R.id.B2n);  // next button
    b2b = (Button) findViewById(R.id.B2b); // back button to page1
    tv = (TextView) findViewById(R.id.res);


    rg2.setOnCheckedChangeListener(new OnCheckedChangeListener(){

        @Override
        public void onCheckedChanged(RadioGroup arg0, int arg1) {
            if (r2c.isChecked()){
    count ++ ;  // since c is the correct answer add 1 to count (mark)

                          }

        }

    });


}

public void move21(View view) { // 点击b2b返回page1时调用

    Intent intent = new Intent(this , Page1.class) ;
    startActivity (intent) ;
} }

顺便说一句,我没有为 radiobuttons 定义 id,只是为 radiogroup 定义了 id (rg2)。 如何使用共享首选项保存无线电组的状态? 谢谢

【问题讨论】:

    标签: android radio-group


    【解决方案1】:

    在您离开当前活动之前,您可以做的是保存状态,例如:

    SharedPreferences settings = getSharedPreferences("answers", MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    editor.putBoolean("r2a",r2a.isChecked());
    editor.putBoolean("r2b",r2b.isChecked());
    editor.putBoolean("r2c",r2c.isChecked());
    editor.putBoolean("r2d",r2d.isChecked());
    editor.apply();
    

    然后,当你回到活动时,你可以这样做:

    SharedPreferences settings = getSharedPreferences("answers", MODE_PRIVATE);
    boolean r2achecked = settings.getBoolean("r2a",false);
    boolean r2bchecked = settings.getBoolean("r2b",false);
    boolean r2cchecked = settings.getBoolean("r2c",false);
    boolean r2dchecked = settings.getBoolean("r2d",false);
    

    然后检查每个新创建的bools,如果其中一个为真,则将该按钮设置为选中。

    【讨论】:

      猜你喜欢
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 2018-02-18
      • 2016-06-09
      • 1970-01-01
      相关资源
      最近更新 更多