我是Android編程的初學者,嘗試創建一個簡單的程序,將英寸轉換爲英尺,將美元轉換爲日元。我有以下兩個無線電組在我main_activity.xml文件:當有兩個廣播組時,請檢查單選按鈕ID
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/distanceInput"
android:layout_below="@+id/distanceInput"
android:layout_marginTop="10dp" >
<RadioButton
android:id="@+id/inch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:checked="true"
android:onClick="handleClickOne"
android:text="Inches" />
<RadioButton
android:id="@+id/foot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/currencyInput"
android:layout_below="@+id/radioGroup1"
android:onClick="handleClickOne"
android:text="Feet" />
</RadioGroup>
<RadioGroup
android:id="@+id/radioGroup2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/currencyInput"
android:layout_below="@+id/currencyInput"
android:layout_marginTop="10dp" >
<RadioButton
android:id="@+id/japan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/radioGroup2"
android:layout_centerVertical="true"
android:checked="true"
android:text="JPY"
android:onClick="handleClickTwo"
/>
<RadioButton
android:id="@+id/usdollar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/euro"
android:layout_below="@+id/euro"
android:text="US Dollars"
android:onClick="handleClickTwo"
/>
</RadioGroup>
這下面的代碼是我的handleClickOne()方法,它檢查該單選按鈕被英寸和英尺之間選擇,但開關情況下的循環總是落在默認情況下 - 我想知道爲什麼:
public void handleClickOne(View view) {
DecimalFormat df = new DecimalFormat("#.##");
boolean checked = ((RadioButton) view).isChecked();
EditText distance = (EditText) findViewById(R.id.distanceInput);
double distanceInput = parseStringToDouble(distance.getText().toString());
switch(view.getId()) {
case R.id.foot:
// convert inches to feet
if (checked) {
distance.setText(df.format(inchToFoot(distanceInput)));
}
break;
case R.id.inch:
//convert feet to inches
if (checked) {
distance.setText(df.format(footToInch(distanceInput)));
}
break;
default:
distance.setText("000");
break;
}
}
我的問題是我是否需要選擇一個收音機組中的單選按鈕?如果是的話如何?
是否可能在RadioGroup(id radioGroup1)上註冊的點擊而不是子視圖? – stkent 2014-09-29 02:21:09
我不確定我是否理解你,但我在單選按鈕中有這樣一行:android:onClick =「handleClickOne」,這是否表示我在單選按鈕上註冊了點擊處理程序? – TonyGW 2014-09-29 02:26:44
在默認情況下添加一個Log語句(或斷點)來檢查傳入的視圖的ID。這應該有助於找出爲什麼默認情況下會被命中,而不是R.id.foot或R.id英寸的情況。 – stkent 2014-09-29 02:28:14