【问题标题】:how to save radio button state如何保存单选按钮状态
【发布时间】:2016-06-09 14:14:07
【问题描述】:

我正在开发 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));

}

【问题讨论】:

  • 您可以在选中任何单选按钮时使用 radioGroup 使其变得简单,然后存储选中的单选按钮 id 并在重新填充时分别显示选中的单选按钮

标签: android radio-button sharedpreferences android-alertdialog


【解决方案1】:

添加这个

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

【讨论】:

  • no.setChecked(sharedPreferences.getBoolean("no", false));
  • @Rohit5k2 当我添加它时只显示第三个选项,但我想要我之前选择的那个显示
  • @HarpalSingh 也试试我在dialog.show();之后建议的那5行代码
  • @HarpalSingh 可能是因为那时对话框不可见导致了问题。在dialog.show(); 之后添加我建议的那 5 行代码
  • @HarpalSingh 您正在使用edit.putBoolean("no", third.isChecked());。在每个 onClick 方法中,您都有“否”。在相应的点击方法中应该有“第一”、“第二”、“第三”
【解决方案2】:

您应该使用 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多