2016-12-13 7 views
-1

私は、単一のボタンを含むレイアウトを膨らませている断片があります。私はとradiobuttonsを動的にonCreateView()メソッドに追加しました。しかし問題はそのボタンのonclicklistenerです。チェックされているradiobuttonのテキストを取得中は、radioGroupになりますが、nulpointerexceptionが表示されます。onclicklistenerで動的に追加されるラジオボタンの参照を取得するには?

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    final View v = inflater.inflate(R.layout.variant_choose,null); 

    Button button = (Button) v.findViewById(R.id.apply_variant_button); 

    LinearLayout ll = (LinearLayout) v.findViewById(R.id.layout_for_radiobuttons_in_variants); 

    final RadioGroup rg = new RadioGroup(); 
    rg.setId(View.generateViewId()); 
    rg.setOrientation(LinearLayout.HORIZONTAL); 
    RadioButton rb[] = new RadioButton[5]; 
    for(int j=0;j<5;j++){ 

      rb[j] = new RadioButton(getActivity()); 
      rb[j].setId(View.generateViewId()); 
      rb[j].setText(j); 
      rg.addView(rb[j]);  

    } 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

       RadioButton rb1 = (RadioButton) v.findViewById(rg.getCheckedRadioButtonId()); 

       String str1 = (String) rb1.getText(); 

     } 
    }); 

    return v; 
} 

ビューVは、動的にonCreateViewまでradiogroupとボタンを作成したが含まれています。しかし、後でonclicklistenerの場合はそうではありません。それはxmlファイルで定義されているボタンだけを含んでいますか?これの理由は何でしょうか?どのようにチェックされたテキストradiobuttonを得ることができますか?

+0

IDなしのタグで作業する必要があります。 –

+0

私はこのSOのポストを指しているかもしれません:http://stackoverflow.com/questions/8460680/how-can-i-assign-an-id-to-a-view-programmatically私はそれがあなたが少しIDを理解するのに役立つと思いますプログラマチックにそれらを実装するいくつかの方法を発見するのに役立ちます。 –

答えて

0

私はあなたのRadioGroupのでrg.getCheckedRadioButtonId()戻り-1、その後、findViewById戻りnullにチェックインRadioButtonを持っていないと信じています。

rb[0].setChecked(true);のようなものを試してみてください。

+0

それは理由かもしれません。しかし、私は 'ラジオボタン 'をチェックしました。スコープ内で 'onclicklistener'の外側でうまく動作しますが、' onClick'メソッドではうまく動作しません –

関連する問題