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>
CodePudding user response:
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);
CodePudding user response:
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;
}