2016-12-13 19 views
-1

我確實有一個片段充氣包含一個按鈕的佈局。我在onCreateView()方法中動態地添加了radiogroupradiobuttons。但問題出在該按鈕的onclicklistener。當檢索radiobuttonradioGroup中籤入的文本時,我確實收到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包含動態創建radiogroup和按鈕,直到onCreateView。但後來在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

是的,它可能是一個原因。但我檢查了一個'radiobutton'。它在'onclicklistener'外面工作正常,但在'onClick'方法中沒有 –

相關問題