【发布时间】:2014-11-23 08:37:13
【问题描述】:
我是一名 Android 编程初学者,正在尝试创建一个简单的程序,将英寸转换为英尺,将美元转换为日元。我的 main_activity.xml 文件中有以下两个无线电组:
<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() 方法,该方法检查在 Inches 和 Feet 之间选择了哪个单选按钮,但 switch-case 循环总是落在默认情况下 - 我想知道为什么:
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) 而不是子视图上?
-
我不确定我是否理解你,但我的单选按钮中有这行:android:onClick="handleClickOne",这是否意味着我在单选按钮上注册了点击处理程序?跨度>
-
在你的默认情况下添加一个日志语句(或断点)来检查正在传入的视图的 id。这应该有助于找出为什么会命中默认情况,而不是 R。 id.foot 或 R.id.inch 案例。