如果选中两个 RadioGroup,如何启用按钮?

问题描述

我真的很想知道如何启用按钮并继续下一个活动,但我的问题是我有 2 个 radioGroup,我不知道我必须在哪里设置 Intent 和 setEnabled()。我想我应该使用条件,但我不确定。

代码

到目前为止我有这个代码

      radioGroup = findViewById(R.id.RadioGroup);
      radioGroupgm = findViewById(R.id.radioGroupgm);
    //Button
    siguiente = findViewById(R.id.buttonSiguiente);
     //RadioButton
      b1 = findViewById(R.id.radioButton);
      b2 = findViewById(R.id.radioButton2);
      b3 = findViewById(R.id.radioButton3);
      b4 = findViewById(R.id.radioButton4);
      b5 = findViewById(R.id.radioButto11);
      b6 = findViewById(R.id.radioButto22);
      b7 = findViewById(R.id.radioButto33);
      b8 = findViewById(R.id.radioButto44);
    cliente = new AsyncHttpClient();
       getSupportActionBar().setTitle("REPORTE");
       getSupportActionBar().setdisplayHomeAsUpEnabled(true);
       
    //---------------------------------------------------------------------------------------
    siguiente.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(  !b1.isChecked() || !b2.isChecked() || !b3.isChecked() || !b5.isChecked() || 
                !b6.isChecked() || !b7.isChecked() || !b8.isChecked()   ){

                Toast.makeText(Inventory.this,"choose a button",Toast.LENGTH_SHORT).show();

            }

        }
    });


    //---------------------------------------------------------------------------------------

 //---- --  ---   ---  --           THE PROBLEM ---  - - - -  ---- -- - -- -------
   radioGroup.setonCheckedchangelistener(new RadioGroup.OnCheckedchangelistener() {
        @Override
        public void onCheckedChanged(RadioGroup group,int checkedId) {
            if(  b1.isChecked() || b2.isChecked() || b3.isChecked() || b4.isChecked()  ){

                siguiente.setEnabled(true);                                          // THIS
                  Intent siguiente = new Intent(Inventory.this,Siguiente.class);     // IS
                   startActivity(siguiente);                                       // THE PROBLEM
            }
        }
    });
    radioGroupgm.setonCheckedchangelistener(new RadioGroup.OnCheckedchangelistener() {
        @Override
        public void onCheckedChanged(RadioGroup group,int checkedId) {
            if(  b5.isChecked() || b6.isChecked() || b7.isChecked() || b8.isChecked()  ){

                siguiente.setEnabled(true);                                    //THIS
                Intent siguiente = new Intent(Inventory.this,Siguiente.class);// IS
                   startActivity(siguiente);                                   // THE PROBLEM

            }
        }
    });

解决方法

您可以检查是否有任何单选组选中了单选按钮。

    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group,int checkedId) {
    
                    if (radioGroup.getCheckedRadioButtonId() != -1 && radioGroupGM.getCheckedRadioButtonId() != -1) {
                        siguiente.setEnabled(true);
                    }
//do other activities
                }
            });

在你的下一个广播组也做同样的事情

    radioGroupGM.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(RadioGroup group,int checkedId) {
        
                        if (radioGroup.getCheckedRadioButtonId() != -1 && radioGroupGM.getCheckedRadioButtonId() != -1) {
                            siguiente.setEnabled(true);
                        }
//do other activities
                    }
                });

现在您可以为按钮设置 onclick 侦听器

siguiente.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //go to next intent
 Intent siguiente = new Intent(Inventory.this,Siguiente.class);// IS
                   startActivity(siguiente);
            }
        });

我认为这应该可以解决您的问题。快乐编码!!

,

使用 && 而非 ||

如果你使用 && ,它会检查所有的条件并且只有当所有的都为真时才做一些事情。但是在 || 的情况下当其中任何一个为真时,它就会运行。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...