저는 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
잘 모르겠습니다 만 라디오 버튼에 다음 줄이 있습니다. android : onClick = "handleClickOne"이는 라디오 버튼에 클릭 핸들러를 등록 했습니까? – TonyGW
전달되는 뷰의 ID를 확인하기 위해 기본 경우에 Log 문 (또는 중단 점)을 추가하십시오. 그러면 R.id.foot 또는 R.id가 아닌 기본 대문자가 히트되는 이유를 파악하는 데 도움이됩니다 .inch 경우. – stkent