I try to retrieve my RADIOGROUP for check which Radio Button is checked. For this, I use this code in onCreate() :
/**
* @param savedInstanceState
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
radioGroup_LANGUE = (RadioGroup) findViewById(R.id.RadioGroup_LANGUE);
radioGroup_MODE = (RadioGroup) findViewById(R.id.RGroup_ModeConnexion);
... }
But I use the debug, and AndroidStudio tell me radioGroup_LANGUE is null. So I get NULLPOINTER EXCEPTION.
In my alertdialog, when user click on OK Button :
.setNegativeButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, just close
// the dialog box and do nothing
radioGroup_LANGUE.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup radioGroup_LANGUE, int checkedId) {
// This will get the radiobutton that has changed in its check state
RadioButton checkedRadioButton = (RadioButton)radioGroup_LANGUE.findViewById(checkedId);
// This puts the value (true/false) into the variable
boolean isChecked = checkedRadioButton.isChecked();
/// If the radiobutton that has changed in check state is now checked...
if (isChecked)
{
// Changes the textview's text to "Checked: example radiobutton text"
Toast.makeText(MainActivity.this,"Checked:" + checkedRadioButton.getText(),Toast.LENGTH_LONG).show();
}
}
});
}});
My xml :
<RadioGroup
android:layout_width="148dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/RadioGroup_LANGUE">
<RadioButton
android:layout_width="137dp"
android:layout_height="wrap_content"
android:text="@string/Langue_1"
android:id="@+id/BouttonRADIO_EN"
android:layout_gravity="center_horizontal"
android:textSize="20dp"
android:textStyle="bold" />
<RadioButton
android:layout_width="137dp"
android:layout_height="wrap_content"
android:text="@string/Langue_2"
android:id="@+id/BouttonRADIO_FR"
android:layout_gravity="center_horizontal"
android:textSize="20dp"
android:textStyle="bold" />
</RadioGroup>
Error log :
06-01 22:51:53.053 21336-21336/com.example.my020571.sterela2 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.my020571.sterela2, PID: 21336
java.lang.NullPointerException
at com.example.my020571.sterela2.MainActivity$4.onClick(MainActivity.java:321)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:170)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5598)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
LINE 321 :
int selectedID = rGroup_LANGUE.getCheckedRadioButtonId();
METHOD :
private void changerLangue() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
final View view = View.inflate(MainActivity.this, R.layout.changer_langue, null);
alertDialogBuilder.setView(view);
// Titre de la fenêtre
alertDialogBuilder.setTitle("Langue");
// set dialog message
alertDialogBuilder
.setMessage("Veuillez choisir votre langue :")
.setCancelable(false)
.setIcon(R.drawable.logo_langue)
.setPositiveButton("ANNULER", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, close
// current activity
dialog.cancel();
}
})
.setNegativeButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, just close
// the dialog box and do nothing
int selectedID = rGroup_LANGUE.getCheckedRadioButtonId();
RadioButton selectedRadioButton = (RadioButton)findViewById(selectedID);
Toast.makeText(getApplicationContext(),selectedRadioButton.getText().toString(),Toast.LENGTH_SHORT).show();
}});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}