0

我有以下代码:

这是在 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();
    }

上面的代码在第一次获得第一个单选按钮的默认值时工作。但无论我选择什么其他单选按钮,它都不起作用,它没有保存按钮点击值,它总是获得第一个单选按钮。

4

3 回答 3

2

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

这是 Debugging 的图像,并查看 Shared Pref 中的值:

在此处输入图像描述

在此处输入图像描述

您也可以在任何位置拉取和推送文件...要查看共享首选项中的值,请单击该文件

在右上角有 2 个带有粉红色箭头的移动图标,您可以从那里推送和拉取共享首选项文件

于 2013-11-15T05:58:33.117 回答
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();
    }
}
于 2013-11-15T08:27:43.440 回答
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();
    }
于 2013-11-15T05:41:29.573 回答