Android:如何在Java中以编程方式检查/取消选中RadioGroup中的单选按钮

时间:2014-02-09 17:28:57

标签: java android radio-button radio-group

我要活动,MainActivity和settingsActivity。因此,我在settingsActivity中使用了onPauseonResume方法。因此,我在settingsActivity中完成的操作在切换到MainActivity后再次保存。

settingsActivity:

在这里,我有一个TextView(称为“settings2”)作为一种变量,我的三个RadioButtonsradio0radio1radio2)它们位于RadioGroup内。 切换到MainActivity后,如果上次检查radio0,我的程序会在文件中保存“0”(保存在SD卡上)。但是如果最后一次检查radio1,它会在该文件中放置1。如果上次检查radio2,则会在该文件中放置2。 我在方法onPause中使用了这个。

然后在方法onResume中,我阅读了该文件的文本并将其放入TextView“settings2”。 在此代码之后(仍在onResume中)我想检查/取消选中我的RadioButtons。因此,如果TextView“settings2”的文本为“0”,则应检查RadioButton "radio0",而不检查其他TextView RadioButton。如果此"radio1"的文字为“1”,则应检查TextView RadioButton,而不检查其他"radio2" if (settings2.getText().equals("0")) { radio0.setChecked(true); radio1.setChecked(false); radio2.setChecked(false); } else if (settings2.getText().equals("1")) { radio0.setChecked(false); radio1.setChecked(true); radio2.setChecked(false); } else if (settings2.getText().equals("2")) { radio0.setChecked(false); radio1.setChecked(false); radio2.setChecked(true); } 。如果此if (settings2.getText().equals("0")) { radioGroup1.check(R.id.radio0); } else if (settings2.getText().equals("1")) { radioGroup1.check(R.id.radio1); } else if (settings2.getText().equals("2")) { radioGroup1.check(R.id.radio2); } 的文字为“2”,则应检查{{1}} {{1}},而不检查其他{{1}} {{1}}。 为此,我使用了以下两个代码,但不幸的是它们没有用。

第一个代码:

{{1}}

第二段代码:

{{1}}

有人可以帮助解决这个小问题吗?我期待着你的帮助!

提前致谢!

2 个答案:

答案 0 :(得分:4)

这是问题所在。

 EditText et = ....
 et.getText() // Does not return a string, it returns an Editable.

尝试:

String str = et.getText().toString;

然后使用str进行比较。

编辑:请参阅下面的源代码,了解为什么必须使用字符串进行比较。默认值是通过引用进行比较,但字符串具有覆盖等于基于字符串值进行比较。如果您不使用String,则不会获得匹配。

public boolean More ...equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = offset;
            int j = anotherString.offset;
            while (n-- != 0) {
                if (v1[i++] != v2[j++])
                    return false;
            }
            return true;
        }
    }
    return false;
}

答案 1 :(得分:3)

您确定TextView文本是0,1还是2?对于这样的设置,你应该看看SharedPreferences!它更容易使用,也更快。

你应该做的第二件事是取代你应该做的settings2.getText().toString ()

int input = Integer.parseInt (settings2.getText().toString()

然后使用

switch(input) {
    case 0:
        // code when text equals 0
    break;
    case 1:
        // code when text equals 1
    break;
    case 2:
        // code when text equals 2
    break;
}

调查一下。 。我现在在移动电话上

编辑:格式化文本以获得更好的视图。

编辑2:SharedPreferences示例

//get your app's Preference Manager
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); // If you are coding this in your Activity class, you have to use getDefaultSharedPreferences(this) instead!

public int getPrefs(String key) {
    //get an Integer from the preferences
    return prefs.getInt(key, defaultValue);
    //defaultValue is in case a value for the given key is not found, for example, the user runs the app for the 1st time.
}

public void setPrefs() {
    //You need a SharedPreference editor
    SharedPreferences.Editor prefsEditor = prefs.edit();
    //SharedPreference work with a key and its value
    prefsEditor.putInt(key, value);
    //You have to commit the preferences, or they don't get saved!
    //If you want to use a save button, you can make the Editor variable into a Global var (class variable) and in your save button's onClick, just commit!
    prefsEditor.commit();
}