5

xmlレイアウトには、RadioGroup、Button1、Button2があります。ユーザーがbutton1をクリックすると、RadioGroupにいくつかのラジオボタンがプログラムで作成されます(ラジオボタンの総数は異なる場合があります(pocet =作成するラジオボタンの数)。

    final RadioButton[] rb = new RadioButton[pocet];        
    RadioGroup rg = (RadioGroup) findViewById(R.id.MyRadioGroup);

    radiobuttonCount++;
    for(int i=0; i<pocet; i++){
        rb[i]  = new RadioButton(this);
        rb[i].setText("Radio Button " + radiobuttonCount);
        rb[i].setId(radiobuttonCount+i);            
        rb[i].setBackgroundResource(R.drawable.button_green);            
        rg.addView(rb[i]);            
    }

私がやろうとしていることはこれです:ユーザーがRadioGroupからxyアイテムを選択すると、選択した値をtextviewに渡し、すべてのradioButtonを削除します。

私が使用する目的を削除するために:

        public void onCheckedChanged(RadioGroup rGroup, int checkedId)
        {
            RadioButton checkedRadioButton = (RadioButton)rGroup.findViewById(checkedId);
            boolean isChecked = checkedRadioButton.isChecked();
            if (isChecked)
            {
                RadioGroup rg = (RadioGroup)    findViewById(R.id.MyRadioGroup);                                        

                for (int i=0; i< rg.getChildCount(); i++){
                    rg.removeViewAt(i);
                }
            }

問題は、これがうまく機能することもありますが、最初のラジオボタンが削除されないままになることもあります。

PS後で、ラジオグループにさまざまなアイテムとさまざまなラジオボタンの量を供給するbutton2を追加したいと思います。そのため、ユーザーが選択した後、すべてのラジオボタンを削除する必要があります。

4

2 に答える 2

28

それは本当に簡単です、あなたはこれをするだけです:

rg.removeAllViews();

forループを使用しましたが、すべてのRadioButtonが削除されなかったためです。楽しんで :)

于 2013-03-15T18:28:23.560 に答える
4

私の最初の推測は、コードのこの部分が悪いということです。

   for (int i=0; i< rg.getChildCount(); i++){
        rg.removeViewAt(i);
    }

子を同時に削除しながら、1つのビューの子を実行することはできません(実行中にrg.getChildCount()が変更されます)

于 2012-09-22T20:25:21.403 に答える