通过单选按钮将男性或女性设置为整数

时间:2018-10-05 22:08:56

标签: java android

我有一个简单的故事应用程序,读者一开始可以选择是男性还是女性。我和男孩和女孩有一个广播小组。

然后我想获取此信息并使用它,以便显示正确的性别措辞。他和她。

我已使用此代码

public void onRadioButtonClicked(View view) {
    int radioButtonId = rg.getCheckedRadioButtonId();
    rb = findViewById(radioButtonId);

    if (rb.getText().equals("boy")) {
        gender = 1;
    } else {
        gender = 2;
    }
}

因此,如果选择男孩,则int性别= 1或性别= 2。

按下某个按钮让某人“交谈”时,它会查看性别== 1时会显示该人,否则将使用她。

我的问题是性别总是== 2。我已经使用Log.i进行了检查,即使单击了男孩单选按钮,我似乎也无法将性别设为1。

请任何人提供任何帮助。

谢谢

3 个答案:

答案 0 :(得分:2)

我假设错误是因为您的单选按钮的文本实际上没有说“ boy”。也许是“男孩”?

无论如何,最好检查id而不是文本。假设您使用xml创建了单选组,则应提供按钮ID。例如ID为“ boy”。然后,您可以执行以下操作:

public void onRadioButtonClicked(View view) {
    if (rg.getCheckedRadioButtonId() == R.id.boy) {
        gender = 1;
    } else {
        gender = 2;
    }
}

答案 1 :(得分:0)

此问题可能是由于未将文本转换为String引起的。您需要致电toString()进行比较。由于getText()返回可编辑的类型,因此代码应类似于:rb.getText().toString().equals("boy")。另外,检查单词boy的拼写是否正确。

答案 2 :(得分:0)

您正在使用equals方法!这是不对的!您要使用的是

 (rb.getText().compareToIgnoreCase(“boy”) == 0)

等于会比较值内存引用而不是其实际值,因为compareTo将比较这些值,对于“匹配”返回0,-1或1(不必担心这些值,它们只是表示它们不会不匹配)