RadioGroup不保存首选项

时间:2013-11-15 05:32:45

标签: android eclipse sharedpreferences radio-group

我有以下代码:

这是onCreate - 我试图在这里设置单选按钮的默认值,这将是单选按钮上的预选值。

pref = getSharedPreferences(Constants.PREF_SETTINGS, 0);                            

        RadioGroup rg_numberOfQuestions = (RadioGroup) findViewById(R.id.radioGroupQuestions);
        int selectedOption = rg_numberOfQuestions.getCheckedRadioButtonId();    
        rb_NumberOfQuestions = (RadioButton) findViewById(selectedOption);      
        rg_numberOfQuestions.setOnCheckedChangeListener(this);      

        final RadioGroup rg_numbersBetween = (RadioGroup) findViewById(R.id.radioGroupNumbersBetween);
        selectedOption = rg_numbersBetween.getCheckedRadioButtonId();   
        rb_NumbersBetween = (RadioButton) findViewById(selectedOption);
        rg_numbersBetween.setOnCheckedChangeListener(this);

@Override
    public void onCheckedChanged(RadioGroup rg, int i) {                        
        switch (rg.getCheckedRadioButtonId())
        {
        case R.id.rb_0to10:
            savePref("rb_0to10", rg.getCheckedRadioButtonId());         
            break;

        case R.id.rb_0to25:
            savePref("rb_0to25", rg.getCheckedRadioButtonId());     
            break;

        case R.id.rb_0to50:
            savePref("rb_0to50", rg.getCheckedRadioButtonId());
            break;
        case R.id.rb_15:
            savePref("rb_15", rg.getCheckedRadioButtonId());
            break;

        case R.id.rb_25:
            savePref("rb_25", rg.getCheckedRadioButtonId());
            break;

        case R.id.rb_50:
            savePref("rb_50", rg.getCheckedRadioButtonId());
            break;          
        }       
    }   


private void savePref(String key, int value) {
        pref = getSharedPreferences(Constants.PREF_SETTINGS, 0);
        editor = pref.edit();
        editor.putInt(key, value);      
        editor.commit();
    }

上面的代码首次获得第一个单选按钮的默认值。但无论我选择哪个其他单选按钮都不起作用,它不会保存按钮点击值,它只是第一个单选按钮。

3 个答案:

答案 0 :(得分:2)

  

您可以在DDMS中看到值本身:

     

以下是调试的图像,并查看Shared Pref中的值:

enter image description here

enter image description here

  

你也可以在任何位置拉动和推送文件......要查看中的值   共享pref单击该文件

     

在右上方有2个带有粉红色箭头的手机图标   你可以推送和拉出共享的首选文件

答案 1 :(得分:1)

尝试使用此代码段代码..它完美无缺......

OnCreate方法代码:

        pref = getSharedPreferences(Constants.PREF_SETTINGS, 0); 

        rg_numberOfQuestions = (RadioGroup) findViewById(R.id.radioGroup1);
        rb_1 = (RadioButton) findViewById(R.id.radioOne);
        rb_1.setOnCheckedChangeListener(this);


        rb_2 = (RadioButton) findViewById(R.id.radioTwo);
        rb_2.setOnCheckedChangeListener(this);

        rb_3 = (RadioButton) findViewById(R.id.radioThree);
        rb_3.setOnCheckedChangeListener(this);


        int selected_radio_button = pref.getInt("radio", 0);
        if(selected_radio_button!=0)
        {
            RadioButton  button = (RadioButton) findViewById(selected_radio_button);
            button.setChecked(true);
        }

听众代码:

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if(isChecked)
    {
        Editor editor = pref.edit();
        editor.putInt("radio", buttonView.getId());
        editor.commit();
    }
}

答案 2 :(得分:0)

似乎share-preference的初始化不正确。你可以尝试下面的代码@

private void savePref(String key, int value) {
      pref = getSharedPreferences("ANYNAME",Context.MODE_PRIVATE);
        editor = pref.edit();
        editor.putInt(key, value);      
        editor.commit();
    }