我有一个简单的故事应用程序,读者在开始时选择他们是男性还是女性。我有一个男孩和女孩的广播组。然后我想获取此信息并使用它,以便显示正确的性别措辞。他和她。我用过这个代码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 回答

宝慕林4294392
TA贡献2021条经验 获得超8个赞
我假设错误是因为您的单选按钮的文本实际上并没有说“男孩”。也许是“男孩”?
无论如何,最好检查 id 而不是文本。假设您使用 xml 制作了无线电组,您应该提供您的按钮 ID。例如id“男孩”。然后你可以这样做:
public void onRadioButtonClicked(View view) {
if (rg.getCheckedRadioButtonId() == R.id.boy) {
gender = 1;
} else {
gender = 2;
}
}

慕仙森
TA贡献1827条经验 获得超8个赞
该问题可能是由于未将文本转换为String
. 您需要打电话toString()
进行比较。由于getText()
回报率可编辑的类型,这样的代码应该是这样的:rb.getText().toString().equals("boy")
。还要检查单词的拼写boy
是否正确。

精慕HU
TA贡献1845条经验 获得超8个赞
您正在使用 equals 方法!这是不正确的!你要使用的是
(rb.getText().compareToIgnoreCase(“boy”) == 0)
Equals 比较内存引用的值而不是它们的实际值,因为 compareTo 将比较这些值,返回 0 表示“匹配”,-1 或 1(不需要担心这些值,它们只是意味着它们不匹配)
添加回答
举报
0/150
提交
取消