1

У меня есть группа переключателей, в которой у меня есть 4 RadioButtons. Я выполняю определенные операции после того, как каждый RadioButton проверен сейчас, если какое-либо условие не выполняется. Я хочу снять флажок RadioButton, для которого это условие не соответствовало, и проверить ранее выбранный RadioButton.android: RadioButton не следует щелкнуть, если определенное условие не выполняется

Для. пример в коде ниже. Я проверяю, доступно ли подключение к Интернету, если оно доступно. Я вызываю метод ... но если он недоступен, я печатаю тост .. но я также хочу снять галочку с переключателем в другом месте часть кода .. как я это делаю? Пожалуйста помоги.

@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 
      } 
     } 
Смежные вопросы