androidandroid-radiobuttonandroid-radiogroup

How to enable a button if two RadioGroups are checked?


I really want to know how to enable a button and move on to the next activity but my problem is that i have 2 radioGroup and i don't know where do i have to set the Intent and setEnabled(). I think i should use a conditional but i'm not sure.

Code

So far I have this code

      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

            }
        }
    });

Solution

  • You can check if any of the radio group has checked radio button.

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

    also do same in your next radio group

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

    now you can set your onclick listener for your button

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

    i think this should solve your problem. Happy Coding!!