2014-09-29 2 views
0

저는 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; 
    } 
} 

내 질문에 라디오 그룹에서 라디오 버튼을 선택해야합니까? 만약 그렇다면 어떻게?

+1

클릭이 아마도 하위보기 대신 RadioGroup (id radioGroup1)에 등록되어 있습니까? – stkent

+0

잘 모르겠습니다 만 라디오 버튼에 다음 줄이 있습니다. android : onClick = "handleClickOne"이는 라디오 버튼에 클릭 핸들러를 등록 했습니까? – TonyGW

+0

전달되는 뷰의 ID를 확인하기 위해 기본 경우에 Log 문 (또는 중단 점)을 추가하십시오. 그러면 R.id.foot 또는 R.id가 아닌 기본 대문자가 히트되는 이유를 파악하는 데 도움이됩니다 .inch 경우. – stkent

답변

0

사용

RadioGroup.setOnCheckedChangeListener 

보다는 onclick

이 설정되어있는 라디오 버튼을 볼 수 있습니다. 내가 온 클릭 라디오 버튼

0

난이 할 수있는 최선의 방법입니다 있는지 확실하지 않습니다에 대해 안정적으로 작동 것 같아요,하지만 지금은 다음 작품 :

내가 클릭 핸들러 방법이있는 라디오 그룹 작동하는 알고 있기 때문에, 그래서 (이 경우 handleClickOne()에서) 내 클릭 핸들러 각각의 방법에, 나는 처음을 radioGroup 개체를 얻을 :

RadioGroup radioGroup1 = (RadioGroup) findViewById(R.id.radioGroup1); 

다음이 방법으로 내 스위치의 경우 않습니다

switch(radioGroup1.getCheckedRadioButtonId()) { 
     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("error"); 
      break; 
} 

그것은 현재 작동하지만, 여전히 모범 사례를 배우는 데 관심이 있습니다. 모두에게 감사드립니다!