7

TableLayout があり、各行の 3 列目にラジオ グループを配置します。私はこのように RadioButtons を構築します:

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

for (int k = 0; k < size; k++) {
    rb[k] = new RadioButton(context);
    rg.addView(rb[k]);
}

ただし、これによりアプリがクラッシュします。アイデアはありますか?

4

2 に答える 2

7

長さ のプリミティブ配列を作成してmegethosいますが、ループでは長さ を使用していますsizemegethosとが異なる値の場合、sizeさまざまな種類のエラーが発生する可能性があります... しかし、RadioGroup がこの配列を最新の状態に保つため、これらはすべて冗長です。

私はこのようなことを試してみます:

RadioGroup group = (RadioGroup) findViewById(R.id.radioGroup1);
RadioButton button;
for(int i = 0; i < 3; i++) {
    button = new RadioButton(this);
    button.setText("Button " + i);
    group.addView(button);
}

でボタンを参照したい場合index

group.getChildAt(index);

また、常に logcat エラーを投稿してください。何が問題で、どこを確認すればよいかを正確に教えてくれます。そうでなければ、このように推測する必要があります。

アップデート

エラーは、同じボタンを 2 つの異なるレイアウトに追加しようとしているために発生します。

tr[k].addView(rb[k]);
rg.addView(rb[k]);

ビューは 1 つの親のみを持つことができます。私の知る限り、最初に多くのカスタマイズを行わないと、RadioGroup を複数のビューに分割することはできません。ただし、ListView にはすでに、RadioGroup のように動作する組み込み機能 setChoiceMode() があります。

List<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, list);
ListView listView = (ListView) findViewById(R.id.list);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setAdapter(adapter);

simple_list_item_checkedSSID と信号強度の表示に簡単に適応できます。それが役立つことを願っています。(イムラン・カーンがグラフィックの変更で私の回答をカットアンドペーストするのに十分な時間がかかる場合は、それを再び彼自身のものとして主張してください。)

于 2012-05-12T18:36:40.403 に答える