0

の数(カウント)を作成していますRadioButton。それぞれに1がRadioGroup必要なので、使用できません。ただし、すべてのsと同様に、一度に1つだけを選択する必要があります。IDを設定し、でそれを読み取ってすべてを変更できると思いましたが、クリックしたものはfalseになります。RadioButtonButtonTableRowRadioButtononCheckedChanged

rb = new RadioButton[count];

For-loop....
     rb[i]  = new RadioButton(this);
     rb[i].setId(5000 + i);
     rb[i].setOnCheckedChangeListener(this);

そしてonCheckedChanged

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
{       
    for (int i = 0; i < count; i++)
    {
        if (buttonView.getId() == 5000 + i)
        {
            // Its the one
        }
        else
        {
            // Its not the one
            RadioButton rb = (RadioButton) findViewById((5000 + count));
            rb.setChecked(false);
        }
    }
}

私は正しいものを捕まえますRadioButton、しかし私がそれを試みるとき.setChecked(false)それは私にを与えますNullPointerException、そして私は理由がわかりません。

4

2 に答える 2

1

RadioButtonsfromから5000toのIDを設定しています5000 + (count - 1)RadioButton配列のサイズはですが、ループを開始するため(?!?)からcountIDはuntilになります)。句では、レイアウトに存在しないIDを持つを検索するため、null参照になります。count - 10elseRadioButton5000 + count

編集 :

をシミュレートするコードは次のRadioGroupようになります。

forループであなたはRadioButtons:を構築しましたか?

rb[i].setOnCheckedChangeListener(checkListener);
//...

checkListenerリスナーインスタンスはどこにありますか?

private OnCheckedChangeListener checkListener = new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            for (int i = 0; i < count; i++) {
                if (buttonView.getId() == 5000 + i) {
                    Log.e("XXX", "Position " + i);
                } else {                                       
                    RadioButton rb = (RadioButton) findViewById((5000 + i));
                    rb.setOnCheckedChangeListener(null);
                    rb.setChecked(false);
                    rb.setOnCheckedChangeListener(checkListener);
                }
            }
        }
    };
于 2012-07-31T12:56:39.050 に答える
0

This is showing you NullPointerException because it is not getting id of checked RadioButton.Instead of this use isCheked() method to check weather radiobutton is checked or not.Try this one

  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
 {       
    for (int i = 0; i < count; i++)
  {
    if (buttonView.isChecked())
    {
        // perform your task here
    }
    else
    {
        // Do something here.........
    }
}

}

hope this helps :)

于 2012-07-31T12:59:32.403 に答える