0

それらを動的に作成RadioButtonsしてに追加しましたRadiogroup。後でRadiogroupに追加されLinearLayoutます。私の問題は、すべてがデバイスで正常に動作することですが、エミュレーターです。エミュレーターでは、その動作に反して、すべてのラジオ ボタンを選択できます。

どんな手掛かり?

以下のサンプルxml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:background="@drawable/sam_bg"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <TextView
        android:id="@+id/tvReportTitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/mediumblue"
        android:textColor="@color/white" 
        android:visibility="gone"
        />
    <LinearLayout 
        android:id="@+id/llGtResponseContainer"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">

    </LinearLayout>

</LinearLayout>

作成するサンプルコードRadiobuttonsRadiogroup

public LinearLayout getLayout(ViewGroup vg) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
    view = (LinearLayout) inflater.inflate(R.layout.single_type, vg, false);
    TextView tv = (TextView)view.findViewById(R.id.txt_single);
    if(isCompulsory) {
        question = "• " + question;
    }
    tv.setText(question);
    radioView = (RadioGroup) view.findViewById(R.id.single_rg);
    for(String i : responseArray) {
        RadioButton rb = new RadioButton(context);
        // rb.setText(i);
        String str = i;
        if(str.trim().split("\\|").length > 1) {
            rb.setText((str.trim().split("\\|"))[0]);
            rb.setTag((str.trim().split("\\|"))[1]);
        }
        else {
            rb.setText(str);
            rb.setTag(str);
        }
        radioView.addView(rb);
    }
    return view;
}

その後、View上記のメソッドから返された が に追加され、LinearLayoutこれが再び に含まれますScrollView

4

1 に答える 1

1

setId() メソッドで RadioButton に「id」を指定します。以下はサンプルコードです。

rgroup = (RadioGroup)findViewById(R.id.rg);
        final RadioButton[] rb = new RadioButton[5];
        for (int i = 0; i < 5; i++) {
            rb[i]=new RadioButton(this);
            rb[i].setText("rdo"+i);
            rb[i].setId(i);
            rgroup.addView(rb[i]);


        }

エミュレーターのみでの Android RadioButtons の誤動作から参照

エミュレータと実際のデバイスで動作が異なる理由はまだ不明です。

于 2013-01-21T13:06:00.193 に答える