如何保存单选按钮状态

how to save radio button state

正在开发 android 应用程序,我在其中打开自己的自定义对话框并在 select 单选按钮毫无疑问地使用单选按钮 selected 并且工作但是当我再次打开对话框所有单选按钮 deselected 我想保存上一个按钮的状态

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));

}

添加这个

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();

您应该使用 Radio 组 并通过 ID 检查其 Radiobutton。 在创建时点赞

 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();