如何保存单选按钮状态

时间:2016-02-26 11:23:45

标签: android radio-button sharedpreferences android-alertdialog

正在研究Android应用程序,我在其中打开自己的自定义对话框,我使用单选按钮,当我选择单选按钮毫无疑问它选择并工作,但当我再次打开对话框所有单选按钮取消选择我想保存状态上一个按钮

enter code here
 private void DiscountDialog() {
    final Dialog dialog = new Dialog(MainActivity.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.burstinterval);
    dialog.setTitle("Timer");
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

    final RadioButton no = (RadioButton) dialog.findViewById(R.id.no);

    final RadioButton first = (RadioButton) dialog.findViewById(R.id.first);

    final RadioButton second = (RadioButton) dialog.findViewById(R.id.second);

    final RadioButton third = (RadioButton) dialog.findViewById(R.id.third);

    dialog.findViewById(R.id.no).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.setImageResource(R.drawable.t1);
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putBoolean("no", no.isChecked());
            edit.putString("my_preference_timer", "no_timer");
            edit.commit();
            dialog.dismiss();
        }
    });
    dialog.findViewById(R.id.first).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.setImageResource(R.drawable.t2);
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putBoolean("first", first.isChecked());
            edit.putString("my_preference_timer", "2");
            edit.commit();
            dialog.dismiss();
        }
    });
    dialog.findViewById(R.id.second).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.setImageResource(R.drawable.t5);
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putBoolean("second", second.isChecked());
            edit.putString("my_preference_timer", "5");
            edit.commit();
            dialog.dismiss();
        }
    });
    dialog.findViewById(R.id.third).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.setImageResource(R.drawable.t10);
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putBoolean("third", third.isChecked());
            edit.putString("my_preference_timer", "10");
            edit.commit();
            dialog.dismiss();
        }
    });

    dialog.show();
}

添加回答后

enter code here



     private void DiscountDialog() {
    final Dialog dialog = new Dialog(MainActivity.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.burstinterval);
    dialog.setTitle("Timer");
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

    final RadioButton no = (RadioButton) dialog.findViewById(R.id.no);


    final RadioButton first = (RadioButton) dialog.findViewById(R.id.first);


    final RadioButton second = (RadioButton) dialog.findViewById(R.id.second);



   // third.setChecked(sharedPreferences.getBoolean("third", false));
    final RadioButton third = (RadioButton) dialog.findViewById(R.id.third);


    dialog.findViewById(R.id.no).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.setImageResource(R.drawable.t1);
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putBoolean("no", no.isChecked());
            edit.putString("my_preference_timer", "no_timer");
            edit.commit();
            dialog.dismiss();
        }
    });
    dialog.findViewById(R.id.first).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.setImageResource(R.drawable.t2);
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putBoolean("first", first.isChecked());
            edit.putString("my_preference_timer", "2");
            edit.commit();
            dialog.dismiss();
        }
    });
    dialog.findViewById(R.id.second).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.setImageResource(R.drawable.t5);
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putBoolean("second", second.isChecked());
            edit.putString("my_preference_timer", "5");
            edit.commit();
            dialog.dismiss();
        }
    });
    dialog.findViewById(R.id.third).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.setImageResource(R.drawable.t10);
            SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putBoolean("third", third.isChecked());
            edit.putString("my_preference_timer", "10");
            edit.commit();
            dialog.dismiss();
        }
    });

    dialog.show();
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
    no.setChecked(sharedPreferences.getBoolean("no", false));
    first.setChecked(sharedPreferences.getBoolean("first", false));
    second.setChecked(sharedPreferences.getBoolean("second", false));
    third.setChecked(sharedPreferences.getBoolean("third", false));

}

2 个答案:

答案 0 :(得分:0)

添加此

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
no.setChecked(sharedPreferences.getBoolean("no", false));
first.setChecked(sharedPreferences.getBoolean("first", false));
second.setChecked(sharedPreferences.getBoolean("second", false));
third.setChecked(sharedPreferences.getBoolean("third", false));

dialog.show();

答案 1 :(得分:0)

您应该使用广播组并按ID检查其Radiobutton。 在Create

上像这样
 prefs = getSharedPreferences("LANG_PREFS", MODE_PRIVATE);
    rg = (RadioGroup)findViewById(R.id.language);
    rg.check(prefs.getInt("lang_btn_id", R.id.amharic));
    rg.setOnCheckedChangeListener(this);

和无线电组的 onCheckedChanged 使用类似的内容

@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
    Log.w("SettingActivity", "Radio Changed");
    SharedPreferences.Editor editor = getSharedPreferences("LANG_PREFS", MODE_PRIVATE).edit();
    switch (radioGroup.getCheckedRadioButtonId()){
        case R.id.urdu:
            editor.putInt("lang_code", 0);
            editor.putString("lang_name", "ar");
            Log.d("Checked","urdu");
            break;
        case R.id.eng:
            editor.putInt("lang_code", 1);
            editor.putString("lang_name", "en");
            Log.d("Checked", "english");
            break;
        case R.id.amharic:
            editor.putInt("lang_code", 2);
            editor.putString("lang_name", "am");
            Log.d("Checked", "amharic");
            break;
    }
    editor.putInt("lang_btn_id", radioGroup.getCheckedRadioButtonId());
    editor.commit();