skip to Main Content

i am unable to gettext() from selected radio button in radioGroup. in my case i am getting value from bottomsheet and trying to get radio button text from fragment but
only one button is displaying the text. would you please check and let me know where i am wrong. thanks very much.

public class BottomSheet extends BottomSheetDialogFragment {

EditText editText;
RadioGroup radioGroup;
RadioButton radioButtonCash,radioButtonCard;
Button btn;
int i=0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment

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

    editText=(EditText)view.findViewById ( R.id.addAmount );

    btn=(Button)view.findViewById ( R.id.saveBtn );
    radioGroup=(RadioGroup)view.findViewById(R.id.radioGrp);

    int selectedId=radioGroup.getCheckedRadioButtonId ();
    radioButtonCash=(RadioButton)view.findViewById ( selectedId );
    radioButtonCard=(RadioButton)view.findViewById ( selectedId );



    btn.setOnClickListener ( new View.OnClickListener () {
        @Override
        public void onClick(View view) {

            i = Integer.parseInt (editText.getText ().toString () );
            new bgthread ().start ();


            if (selectedId==-1)
            {
                Toast.makeText ( getContext (), "nothing to show", Toast.LENGTH_SHORT ).show ();
            }
            else if (selectedId==R.id.radioButtonCash)
            {
                Toast.makeText ( getContext (), "text is"+radioButtonCash.getText (), Toast.LENGTH_SHORT ).show ();
            }
            else if (selectedId==R.id.radioButtonCard)
            {
                Toast.makeText ( getContext (), "text is"+radioButtonCard.getText (), Toast.LENGTH_SHORT ).show ();
            }

        }
    } );

    return view;


}

}

<EditText
    android:id="@+id/addAmount"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="16dp"
    android:inputType="number|numberDecimal"
    android:hint="@string/enter_amount"
    app:layout_constraintBottom_toTopOf="@+id/freenowImg"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/freenowImg"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</EditText>

<ImageView
    android:id="@+id/freenowImg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/freenow"
    app:layout_constraintStart_toStartOf="@+id/addAmount"
    app:layout_constraintTop_toBottomOf="@+id/addAmount"
    android:contentDescription="TODO">

</ImageView>

<ImageView
    android:id="@+id/boltImg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="120dp"
    android:src="@drawable/bolt"
    app:layout_constraintEnd_toEndOf="@+id/addAmount"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toEndOf="@+id/freenowImg"
    app:layout_constraintTop_toBottomOf="@+id/addAmount" />

<ImageView
    android:id="@+id/uberImg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="28dp"
    android:src="@drawable/uber"
    app:layout_constraintEnd_toEndOf="@+id/freenowImg"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="@+id/freenowImg"
    app:layout_constraintTop_toBottomOf="@+id/freenowImg" />

<Button
    android:id="@+id/saveBtn"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:background="#009688"
    android:text="Save"
    app:backgroundTint="@android:color/darker_gray"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/uberImg"
    app:layout_constraintVertical_bias="0.951" />


<RadioGroup
    android:id="@+id/radioGrp"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toTopOf="@+id/saveBtn"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/uberImg">

    <RadioButton
        android:id="@+id/radioButtonCash"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:layout_weight="1"
        android:text="@string/cash"
       />

    <RadioButton
        android:id="@+id/radioButtonCard"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:checked="false"
        android:text="@string/card" />
</RadioGroup>

</androidx.constraintlayout.widget.ConstraintLayout>

2

Answers


  1. Chosen as BEST ANSWER

    so finally i have find the solution specifically according to the problem i faced. in my case within the fragment the radio group was not working properly i used if else statement but i was getting id only for one radio button at a time.

    now i am using switch statement within "radioGroup.setOnCheckedChangeListener" and its working absolutely according.

    public class BottomSheet extends BottomSheetDialogFragment {
    
    EditText editText;
    RadioGroup radioGroup;
    RadioButton radioButtonCash,radioButtonCard;
    Button btn;
    int i=0;
    CharSequence strRbTxt="";
    
    
    
    
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
    
        View view= inflater.inflate ( R.layout.fragment_bottom_sheet, container, false );
    
        btn=(Button)view.findViewById ( R.id.saveBtn );
        radioGroup=(RadioGroup)view.findViewById(R.id.radioGrp);
    
    
        editText=(EditText)view.findViewById ( R.id.addAmount );
        radioButtonCash=(RadioButton)view.findViewById ( R.id.radioButtonCash );
        radioButtonCard=(RadioButton)view.findViewById ( R.id.radioButtonCard );
    
        radioGroup.setOnCheckedChangeListener ( new RadioGroup.OnCheckedChangeListener () {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
    
                switch (i)
    
    
                {
                    case R.id.radioButtonCash:
                        strRbTxt=radioButtonCash.getText ().toString ();
                        break;
                    case R.id.radioButtonCard:
                        strRbTxt=radioButtonCard.getText ().toString ();
                        break;
                }
    
            }
        } );
    
    
        btn.setOnClickListener ( new View.OnClickListener () {
    
            @Override
            public void onClick(View view) {
    
                i = Integer.parseInt (editText.getText ().toString () );
                new bgthread ().start ();
                Toast.makeText ( getContext (), "text is"+strRbTxt, Toast.LENGTH_SHORT ).show ();
    
            }
        } );
    
        return view;
    
    
    }
    

  2. this block of your code just run once and not checked selectedId value after oncheckedChange call:

        int selectedId=radioGroup.getCheckedRadioButtonId ();
    

    try this :

    String strRbTxt="nothing to show";
    radioGroup.setOncheckedChangedListener(new RadioGroup.onChecked....
    {
      switch(checkedId){
       case R.id.radioButtonCash:
        strRbTxt=radioButtonCash.getText ();
    break;
    
    case R.id.radioButtonCard:
        strRbtxt=radioButtonCard.getText ();
    break;
    }
     
    }
    
    btn.setOnClickListener ( new View.OnClickListener () {
            @Override
            public void onClick(View view) {
           .....   
     Toast.makeText ( getContext (), "text is "+strRbtxt, Toast.LENGTH_SHORT ).show ();
            }
        } );
    

    udpdate 1 :
    change your findviewbyId from :

     int selectedId=radioGroup.getCheckedRadioButtonId ();
        radioButtonCash=(RadioButton)view.findViewById ( selectedId );
        radioButtonCard=(RadioButton)view.findViewById ( selectedId );
    

    to and again try my code :

    radioButtonCash=(RadioButton)view.findViewById (R.id.radioButtonCash);     
    radioButtonCard=(RadioButton)view.findViewById (R.id.radioButtonCard);
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search