2012-10-01 42 views
2

我開發一個Android 3.1平板電腦應用程序,我需要以編程方式創建一些單選按鈕:「檢查一個單選按鈕,取消選中所有其他」不工作

RadioGroup radGrp = new RadioGroup(mActivity); 
    params.weight = 0.2f; 
    radGrp.setLayoutParams(params); 
    radGrp.setOrientation(RadioGroup.HORIZONTAL); 

    String tag = Long.toString(req.getRequirementId()) + "_" + 
      getString(R.string.yes); 
    RadioButton radioBtnYES = new RadioButton(mActivity); 
    radioBtnYES.setText(getString(R.string.yes)); 
    radioBtnYES.setTag(tag); 
    radioBtnYES.setChecked(confValue); 
    radioBtnYES.setOnClickListener(radioListener); 
    radGrp.addView(radioBtnYES); 

    tag = Long.toString(req.getRequirementId()) + "_" + 
      getString(R.string.no); 
    RadioButton radioBtnNO = new RadioButton(mActivity); 
    radioBtnNO.setText(getString(R.string.no)); 
    radioBtnNO.setTag(tag); 
    radioBtnNO.setChecked(!confValue); 
    radioBtnNO.setOnClickListener(radioListener); 
    radGrp.addView(radioBtnNO); 

    radGrp.setOnCheckedChangeListener(checkedChangedListener); 
    requirementLayout.addView(radGrp); 

我的問題是,當我點擊在一個未經檢查的單選按鈕上,另一個在同一個無線電組上,它仍然被檢查。

radioListener代碼:

private RadioButton.OnClickListener radioListener = 
     new RadioButton.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     String tag = v.getTag().toString(); 
     String[] parts = tag.split("_"); 

     if ((parts != null) && (parts.length == 2)) 
     { 
      boolean value = (parts[1].equals(getString(R.string.yes))); 

      Long id = Long.valueOf(parts[0]); 
      requirementsState.put(id, value); 
     } 
    } 
}; 

,這是checkedChangedListener代碼:

private RadioGroup.OnCheckedChangeListener checkedChangedListener = 
     new OnCheckedChangeListener() 
{ 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) 
      { 
       RadioButton rb = (RadioButton) 
         mActivity.findViewById(checkedId); 

       group.setOnCheckedChangeListener(null); 

       group.clearCheck(); 
       rb.setChecked(true); 

       group.setOnCheckedChangeListener(checkedChangedListener); 
      } 
}; 

我在做什麼錯?

+0

嘗試使用onCheckChangelistener檢查其他單選按鈕在RadioGroup中 – Shruti

+0

你檢查這http://stackoverflow.com/questions/6646442/set-radiobutton-programmatically-android –

+0

我用更多的代碼更新了我的問題。 – VansFannel

回答

1

我找到了答案:**我需要在將所有收音機按鈕添加到收音機組後,設置選中的收音機按鈕。

這是我的工作代碼:

RadioGroup radGrp = new RadioGroup(mActivity); 
    params.weight = 0.2f; 
    radGrp.setLayoutParams(params); 
    radGrp.setOrientation(RadioGroup.HORIZONTAL); 

    String tag = Long.toString(req.getRequirementId()) + "_" + 
      getString(R.string.yes); 
    RadioButton radioBtnYES = new RadioButton(mActivity); 
    radioBtnYES.setText(getString(R.string.yes)); 
    radioBtnYES.setTag(tag); 
    radioBtnYES.setOnClickListener(radioListener); 
    radGrp.addView(radioBtnYES); 

    tag = Long.toString(req.getRequirementId()) + "_" + 
      getString(R.string.no); 
    RadioButton radioBtnNO = new RadioButton(mActivity); 
    radioBtnNO.setText(getString(R.string.no)); 
    radioBtnNO.setTag(tag); 
    radioBtnNO.setOnClickListener(radioListener); 
    radGrp.addView(radioBtnNO); 

我已經添加了兩個單選按鈕單選按鈕組,然後:

if (confValue) 
     radioBtnYES.setChecked(true); 
    else 
     radioBtnNO.setChecked(true); 

    requirementLayout.addView(radGrp); 
相關問題