1

我有一个单选按钮组,其中我有4个RadioButtons。我做了某些操作后,每个RadioButton检查现在是否满足一些条件我想取消选中条件不符合的RadioButton并检查以前选择的RadioButton。android:RadioButton不应该被点击,如果不符合某些条件

对于。下面的代码示例我正在检查如果可用的Internet连接是否可用,我打电话的方法...但如果它不可用我打印吐司..但我也想取消选中其他单选按钮部分代码..我该怎么做?请帮忙。

@Override 
public void onCheckedChanged(RadioGroup group, int i) { 
    Log.e("Position 649 :", i + grades_Array.get(i) + ""); 
    Boolean check_net = Utils.isConnected(context); 
    if(check_net) { 
     if(rdb_id!=-1) 
     change_grade = grades_Array.get(i); 
     change_grade = change_grade.replace(' ', '-'); 
     grade = change_grade; 
     ProductDetails.bundle.putString("product_grade", grade); 
     ProductDetails.bundle.putString("product_caret", caret); 
     ProductDetails.bundle.putString("product_color", color); 
     ProductDetails.bundle.putString("product_size", size_item); 
     ProductDetails.bundle.putString("diamond_color", diamond_color); 
     ProductDetails.bundle.putString("product_rate", rate_per_gm); 
     ProductDetails.bundle.putString("product_weight", breakup_weight); 
     ProductDetails.bundle.putString("product_weight", breakup_weight); 
     ProductDetails.bundle.putString("product_purity", purity); 
     calculation_data(productId, caret, diamond_color, grade, color, String.valueOf(check_size_Array.indexOf(size_item)), purity); 
    } 
    else{ 
     Utils.setToastCenter(context, context.getString(R.string.net_msg)); 
    } 
} 
+1

通'-1'在【检查()](HTTPS ://developer.android.com/reference/android/widget/RadioGroup.html#check(int)) – codeMagic

+0

请注意,我的上述评论将取消选中'RadioGroup'中的所有内容,您通常只希望能够对其进行检查否则你想复选框 – codeMagic

+0

你有没有解决它? – ItamarG3

回答

4

取消选中一个单选按钮,使用此:

... 
else{ 
    Utils.setToastCenter(context, context.getString(R.string.net_msg)); 
    radiobutton.setOnCheckedChangeListener (null);   
    radiobutton.setChecked(false); 
    radiobutton.setOnCheckChangeListener(mListener); 
} 

其中radiobutton是要取消的单选按钮。 你必须单选按钮的检查监听器保存到一个临时变量mListener

+0

radiobutton.setChecked(false);这一个触发onCheckedChanged?我认为它很生气。这个解决方案工作吗? –

+0

它工作时,我用模拟器测试它... – ItamarG3

+0

我认为侦听器触发器认为你设置编程检查/取消选中。一探究竟。我也面临复选框和广播组的问题 –

0

这是我如何解决我的问题,希望它可以帮助别人:

//I took an integer 
int rdb_id=-1; 
//and onCreate I did: 
    rdb_id=diamond_rg.getCheckedRadioButtonId(); 
//AND.. 

    @Override 
     public void onCheckedChanged(RadioGroup group, int i) { 

      Boolean check_net = Utils.isConnected(context); 
      if(check_net) { 
       change_grade = grades_Array.get(i); 
       change_grade = change_grade.replace(' ', '-'); 
       grade = change_grade; 
       ProductDetails.bundle.putString("product_grade", grade); 
       ProductDetails.bundle.putString("product_caret", caret); 
       ProductDetails.bundle.putString("product_color", color); 
       ProductDetails.bundle.putString("product_size", size_item); 
       ProductDetails.bundle.putString("diamond_color", diamond_color); 
       ProductDetails.bundle.putString("product_rate", rate_per_gm); 
       ProductDetails.bundle.putString("product_weight", breakup_weight); 
       ProductDetails.bundle.putString("product_weight", breakup_weight); 
       ProductDetails.bundle.putString("product_purity", purity); 
       whatSize=fromRadio; 
       rdb_id=i; 
       calculation_data(productId, caret, diamond_color, grade, color, String.valueOf(check_size_Array.indexOf(size_item)), purity); 
      } 
      else{ 
       setToastCenter(context, context.getString(R.string.net_msg)); 
       diamond_rg.check(rdb_id); //setting previously selected radiobutton 
      } 
     } 
相关问题