慕碼人8056858
2021-10-28 16:52:24
我有一個簡單的故事應用程序,讀者在開始時選擇他們是男性還是女性。我有一個男孩和女孩的廣播組。然后我想獲取此信息并使用它,以便顯示正確的性別措辭。他和她。我用過這個代碼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
提交
取消