我有一个简单的故事应用程序,读者一开始可以选择是男性还是女性。我和男孩和女孩有一个广播小组。
然后我想获取此信息并使用它,以便显示正确的性别措辞。他和她。
我已使用此代码
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。
请任何人提供任何帮助。
谢谢
答案 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(不必担心这些值,它们只是表示它们不会不匹配)