Soy un principiante de Android Studio. No sé cómo resolver mi pregunta. Hay un fragmento que me gustaría que el usuario elija lo que le gusta en Radio Group que tiene sus tres botones de radio. Antes de enviar su resultado a otro fragmento , Necesito que aparezca el cuadro de diálogo Alerta para que el usuario vuelva a verificar lo que elige. ¿Hay alguna forma de recopilar todos los resultados de los botones y mostrarlos a los usuarios?

public class MainActivity extends Fragment {
@Nullable
@Override
 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.radio_button, container, false);

    RadioGroup rgdSize = view.findViewById(R.id.rdgSize);
    rgdSize.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            switch (i) {

                case (R.id.rdbSmall):

                    break;

                case (R.id.rdbMedium):

                    break;

                case (R.id.rdbLarge):

                    break;
            }


        }
    });

    RadioGroup rgdRank = view.findViewById(R.id.rdgRank);
    rgdRank.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            switch (i) {

                case (R.id.rdbFirst):

                    break;

                case (R.id.rdbSecond):

                    break;

                case (R.id.rdbThird):

                    break;
            }


        }
    });


    Button btnSend;
    btnSend = view.findViewById(R.id.btnSend);
    btnSend.setOnClickListener(btnSendListener);

    return view;
}

private Button.OnClickListener btnSendListener = new Button.OnClickListener(){


    @Override
    public void onClick(View view) {

        switch (view.getId()){

            case R.id.btnSend:
                new AlertDialog.Builder(getActivity())
                        .setTitle("Please make sure you choose correct")
                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {


                            }
                        })

                        .setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {


                            }
                        })
                        .show();

        }

        }

    };
}

Aquí está mi XML

<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/rdgSize">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Size"
        android:textSize="40sp"/>

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Small"
        android:textSize="20sp"
        android:id="@+id/rdbSmall"/>


    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Medium"
        android:textSize="20sp"
        android:id="@+id/rdbMedium"/>


    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large"
        android:textSize="20sp"
        android:id="@+id/rdbLarge"/>


</RadioGroup>


<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintTop_toBottomOf="@+id/rdgSize"
    android:id="@+id/rdgRank">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="40sp"
        android:text="Rank"/>


    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="First"
        android:textSize="20sp"
        android:id="@+id/rdbFirst"/>


    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Second"
        android:textSize="20sp"
        android:id="@+id/rdbSecond"/>


    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Third"
        android:textSize="20sp"
        android:id="@+id/rdbThird"/>


</RadioGroup>

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@+id/rdgRank"
    android:text="Send"
    android:id="@+id/btnSend"/>
0
user10318011 13 sep. 2018 a las 12:01

3 respuestas

La mejor respuesta

Con esto, puede hacer que sus radiogrupos sean universales:

  RadioGroup rgdSize,rgdRank;

 @Nullable
 @Override
  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable 
 ViewGroup container, @Nullable Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.radio_button, container, false);

 rgdSize = view.findViewById(R.id.rdgSize);
 rgdRank = view.findViewById(R.id.rdgRank);

 Button btnSend;
btnSend = view.findViewById(R.id.btnSend);
btnSend.setOnClickListener(btnSendListener);

return view;
 }

Reemplace su código de alerta de diálogo con este:

         private Button.OnClickListener btnSendListener = new Button.OnClickListener(){


@Override
public void onClick(View view) {

    switch (view.getId()){

        case R.id.btnSend:
            int selectedId = rgdSize.getCheckedRadioButtonId();

        // find the radiobutton by returned id
        radioButton = (RadioButton) findViewById(selectedId);
        int selectedId2 = rgdRank.getCheckedRadioButtonId();

        // find the radiobutton by returned id
        radioButton2 = (RadioButton) findViewById(selectedId2);

      String result = radioButton.getText()+""+radioButton2.getText();



           new AlertDialog.Builder(getActivity())
                    .setTitle("Please make sure you choose correct")
                    .setMessage(""+result)
                    .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {


                        }
                    })

                    .setNegativeButton("CANCEL", new 
              DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {


                        }
                    })
                    .show();

    }

    }

};
0
Diwakar Singh 13 sep. 2018 a las 11:24

Podrías hacer lo siguiente:

RadioButton rb = (RadioButton)rgdRank.findViewById(rgdRank.getCheckedRadioButtonId());//get checked radiobutton
String s =  rb.getText(); //get text of this checked radiobutton

Después de esto, usando la función de clase String para mostrar lo que quieres.

0
navylover 13 sep. 2018 a las 09:28

Podrías usar rgdRank.getCheckedRadioButtonId(); para obtener la identificación del botón de radio marcada.

0
Nandu Dharmapalan 13 sep. 2018 a las 09:13