>

RadioButtons 를 프로그래밍 방식으로 추가하고 있습니다  기존의 빈 RadioGroup 에  다음 코드와 함께.

       RadioGroup currencySettingRadioGroup = (RadioGroup) currency_settings_dialog.findViewById(R.id.rg_currency_symbol);
        currencySettingRadioGroup.removeAllViews();
        RadioButton rb_none = new RadioButton(this);
        // Add the 'None' option at the start
        rb_none.setText("None");
        if (v_currency_symbol.equals("")) rb_none.setChecked(true);
        currencySettingRadioGroup.addView(rb_none,0);

        String[] currency_symbols_options_array = getResources().getStringArray(R.array.currency_symbols);
        for ( int i=0; i < currency_symbols_options_array.length; i++ ) {
            RadioButton rb = new RadioButton(this);
            rb.setText(currency_symbols_options_array[i]);
            if (v_currency_symbol.equals(currency_symbols_options_array[i].substring(0,1))) rb.setChecked(true);
            currencySettingRadioGroup.addView(rb,i+1);
        }

레이아웃 XML은 다음과 같습니다 :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/currency_settings_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="12dp"
    android:paddingLeft="24dp"
    android:paddingRight="24dp"
    android:paddingTop="24dp">
    <TextView
        android:id="@+id/dialog_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/currency_symbol"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle" />
    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/currency_symbol_explanation" />
    <RadioGroup
        android:id="@+id/rg_currency_symbol"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    <Button
        android:id="@+id/settings_close_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:elevation="0dp"
        android:gravity="end|center_vertical"
        android:text="@string/close_currency_settings"
        android:textColor="#008dcd" />
</LinearLayout>

RadioGroup  올바르게 구축되고 RadioButton  내 v_currency_symbol 와 일치하는 텍스트로  변수의 첫 문자가 예상대로 확인됩니다.

그러나 다른 RadioButton 를 클릭하면 s로 인해 확인 된 옵션이 선택 취소되지 않습니다. 두 가지 옵션이 선택되어 있습니다.

다른 옵션을 클릭하고 확인하면 두 번째 확인 된 위치가 선택 해제되지만 첫 번째 RadioButton 는 선택 해제됩니다 확인 된 상태로 유지합니다.

그것은 마치 RadioButton 와 거의 같습니다  프로그래밍 방식으로 별도의 RadioGroup에 속해 있는지 확인합니다.

RadioButton 중 하나를 확인하는 두 줄을 제거 창조에 대한 RadioGroup 허용  제대로 작동하려면 분명히 이전 선택을 볼 수 없습니다.

  • 답변 # 1

    문제가 발견되었습니다 ... RadioButton 확인   RadioGroup 에 추가하기 전  문제를 일으킨다.

    관련된 두 줄을 바꾸면 문제가 해결됩니다. 작업 코드는 다음과 같습니다.

       // Add the 'None' option at the start
        rb_none.setText("None");
        currencySettingRadioGroup.addView(rb_none,0);
        if (v_currency_symbol.equals("")) rb_none.setChecked(true);
    
        String[] currency_symbols_options_array = getResources().getStringArray(R.array.currency_symbols);
        for ( int i=0; i < currency_symbols_options_array.length; i++ ) {
            RadioButton rb = new RadioButton(this);
            rb.setText(currency_symbols_options_array[i]);
            currencySettingRadioGroup.addView(rb,i+1);
            if (v_currency_symbol.equals(currency_symbols_options_array[i].substring(0,1))) rb.setChecked(true);
        }
    
    

  • 이전 패키지 Java 데스크탑 앱 (그라 데)
  • 다음 Laravel - 라 라벨 - 폼 요청에서 컨트롤러로 변수 반환