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 に答える