【问题标题】:Store Radiobutton int value (Android Studio)存储 Radiobutton int 值 (Android Studio)
【发布时间】:2021-01-21 10:41:33
【问题描述】:

场景

一个单选组内有 3 个单选按钮,第一个单选按钮名称为“A”,第二个单选按钮名称为“B”,第三个单选按钮名称为“C”。

问题

  1. 如何获得 int 值,如果我选择第一个单选按钮,那么它应该获得 2 的 int 值,同样,如果我选择第二个和第三个单选按钮,那么它应该获得 5 和 6 的 int 值。

  2. 一旦我选择了任何单选按钮,它就会自动将 int 值保存在共享首选项中(例如,我选择第一个单选按钮,值“2”被存储)。

  3. 在我选择之后,我决定关闭应用程序并再次打开,发现第一个单选按钮仍处于选中状态。

【问题讨论】:

    标签: java android android-studio radio-button sharedpreferences


    【解决方案1】:

    您可以获取 RadioGroup 的 CheckedId 并将其与每个 RadioButton 的 Id 进行比较,然后根据值的位置进行设置。

    例子:

        int value;
        radioGroup.setOnCheckChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId){
                if (checkedId == R.id.buttonA) {
                    value = 2;
                } else if (checkedId == R.id.buttonB) {
                    value = 5;
                } else {
                    value = 6;
                }
            }
    

    将该值保存在您的偏好中,当您返回应用程序时,只需检查位置并执行 radioGroup.check();

    【讨论】:

    • 它成功了,我可以存储int 值。但是如何维护选定的单选按钮意味着如果我选择第一个单选按钮然后关闭应用程序并再次打开应用程序然后仍然选择第一个单选按钮?
    • 您可以获取您存储的共享首选项,并使用 switch case 的值进行验证,例如,如果您获得 2 作为值,则它是第一个位置 radioGroup.check(R.id.buttonA)。
    • 我在销毁应用程序后使用此逻辑仍然未选中 if (value==2){ buttonA.setChecked(true); }else { buttonA.setChecked(false); } 你能帮我吗?
    • SharedPreferences 首选项 = PreferenceManager.getDefaultSharedPreferences(context); int check = preferences.getInt("yourKey", defaultValue); if (checked == 2) { radioGroup.check(R.id.buttonA); }
    • 我使用了这个逻辑,但不起作用int method=sharedPreferences.getInt("key",4); if (method==2){ radioOne.setChecked(true); }else { radioOne.setChecked(false); }
    猜你喜欢
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多