【问题标题】:android: RadioButton should not get clicked if certain condition is not metandroid:如果不满足某些条件,则不应单击 RadioButton
【发布时间】:2017-04-16 05:12:40
【问题描述】:

我有一个单选按钮组,其中有 4 个单选按钮。如果某些条件不满足,我现在检查每个 RadioButton 后执行某些操作我想取消选中不满足条件的 RadioButton,并检查之前选择的 RadioButton。

为了。下面的代码中的示例我正在检查互联网连接是否可用,如果可用,我正在调用一个方法......但如果它不可用,我正在打印一个 toast.. 但我也想取消选中 else 中的单选按钮代码的一部分..我该怎么做?请帮忙。

@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));
    }
}

【问题讨论】:

  • check() 中传递-1
  • 请注意,我上面的评论将取消选中 RadioGroup 中的所有内容,您通常只希望能够选中一个,否则您需要复选框
  • 你解决了吗?
  • (在手机上,所以无法在回答 cmets 中标记您)您可以从 group 获取 radiobutton

标签: java android android-layout android-studio android-fragments


【解决方案1】:

这就是我解决问题的方法,希望对某人有所帮助:

//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
            }
        }

【讨论】:

    【解决方案2】:

    要取消选中单选按钮,请使用:

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

    其中radiobutton 是您要取消选中的单选按钮。 您必须将单选按钮的检查侦听器保存到临时变量mListener

    【讨论】:

    • radiobutton.setChecked(false);这会触发 onCheckedChanged 吗?我认为它会触发。这个解决方案有效吗?
    • 我认为侦听器触发器认为您以编程方式设置检查/取消检查。看看这个。我也遇到了复选框和无线电组的问题
    • 对,请稍等
    • 嗨 Itamar,我想你误解了我的问题。我想从 onCheckedChanged() 方法中取消选中选中的单选按钮。这意味着在调用此方法时单选按钮已经被选中。我想在 else 部分回滚这个选中的单选按钮。如果我正在动态创建单选按钮并且仅使用 onCheckedChanged(RadioGroup group, int i); 的参数,我怎么知道要取消选中哪个单选按钮
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多