Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check which radio button of a radio group is selected? [ANDROID]

I am using two radio groups with multiple radio buttons, I want to check which radio button is selected so that I can call specific functions accordingly. I am using getCheckedRadioButtonId method to do this, but it's throwing null pointer exception. How this can be done in a correct way? I have tried other methods too. Any help will be appreciated. Here is my code

public class MainActivity extends AppCompatActivity {
private EditText et_name;
private EditText et_age;
private EditText et_contactno;

private RadioGroup radioGroup_gender;
private RadioButton radioButton_male;
private RadioButton radioButton_female;
private RadioGroup radioGroup_methods;
private RadioGroup radioGroup_intent_methods;
private RadioButton radioButton_textfile;
private RadioButton radioButton_sharefpref;
private RadioButton radioButton_database;
private RadioButton radioButton_staticfields;
private RadioButton radioButton_intents;
private RadioButton radioButton_direct;
private RadioButton radioButton_bundle;
private RadioButton radioButton_parcelable;

private String name;
private String age;
private String contact_no;
private String gender;

private int gender_selected_id;
private int transfer_method_selected_id;
private int selected_intent_method_id;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    findViewsByIds();
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "FAB CLICKED", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
            executeSelectedMethod();
        }
    });
}

private void findViewsByIds() {
    et_name = (EditText) findViewById(R.id.et_name);
    et_age = (EditText) findViewById(R.id.et_age);
    et_contactno = (EditText) findViewById(R.id.et_contactno);
    radioGroup_gender = (RadioGroup) findViewById(R.id.rg_gender);
    radioButton_male = (RadioButton) findViewById(R.id.rb_male);
    radioButton_female = (RadioButton) findViewById(R.id.rb_female);

    radioGroup_methods = (RadioGroup) findViewById(R.id.rg_methods);
    radioGroup_intent_methods = (RadioGroup) findViewById(R.id.rg_intentmethods);
    radioButton_textfile = (RadioButton) findViewById(R.id.rb_textfile);
    radioButton_sharefpref = (RadioButton) findViewById(R.id.rb_sharefpref);
    radioButton_database = (RadioButton) findViewById(R.id.rb_database);
    radioButton_staticfields = (RadioButton) findViewById(R.id.rb_static);
    radioButton_intents = (RadioButton) findViewById(R.id.rb_intent);
    radioButton_direct = (RadioButton) findViewById(R.id.rb_intent_direct);
    radioButton_bundle = (RadioButton) findViewById(R.id.rb_intent_bundle);
    radioButton_parcelable = (RadioButton) findViewById(R.id.rb_intent_parcelable);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

private void executeSelectedMethod() {
    try {
        name = et_name.getText().toString();
        age = et_age.getText().toString();
        contact_no = et_contactno.getText().toString();
        RadioButton rb = (RadioButton) findViewById(radioGroup_gender.getCheckedRadioButtonId());
        String selectedgender = rb.getText().toString();
        if (selectedgender.equalsIgnoreCase("Male")) {
            gender = radioButton_male.getText().toString();
        } else if (selectedgender.equalsIgnoreCase("Female")) {
            gender = radioButton_female.getText().toString();
        }
        RadioButton rb_selected_method = (RadioButton) findViewById(radioGroup_gender.getCheckedRadioButtonId());
        String selectedRadioButtontext = rb_selected_method.getText().toString();
        if (selectedRadioButtontext.equalsIgnoreCase("Text File")) {
            ConstantFile.TRANSFER_METHOD = radioButton_textfile.getText().toString();
            executeTextFileMethod();
        } else if (transfer_method_selected_id == R.id.rb_sharefpref) {
            ConstantFile.TRANSFER_METHOD = radioButton_sharefpref.getText().toString();
        } else if (transfer_method_selected_id == R.id.rb_database) {
            ConstantFile.TRANSFER_METHOD = radioButton_database.getText().toString();
        } else if (transfer_method_selected_id == R.id.rb_static) {
            ConstantFile.TRANSFER_METHOD = radioButton_staticfields.getText().toString();
        } else {

            selected_intent_method_id = radioGroup_intent_methods.getCheckedRadioButtonId();
            if (selected_intent_method_id == R.id.rb_intent_direct) {
                ConstantFile.TRANSFER_METHOD = radioButton_direct.getText().toString();
            } else if (selected_intent_method_id == R.id.rb_intent_bundle) {
                ConstantFile.TRANSFER_METHOD = radioButton_bundle.getText().toString();

            } else if (selected_intent_method_id == R.id.rb_intent_parcelable) {
                ConstantFile.TRANSFER_METHOD = radioButton_parcelable.getText().toString();

            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private void executeTextFileMethod() throws IOException {
    File transfer_file = new File("/sdcard/" + name + ".txt");
    transfer_file.createNewFile();
    FileOutputStream fileoutputstrem = new FileOutputStream(transfer_file);
    OutputStreamWriter outstreamwriter = new OutputStreamWriter(fileoutputstrem);
    outstreamwriter.append(name + ":" + age + ":" + contact_no + ":" + gender);
    fileoutputstrem.close();
    outstreamwriter.close();
    Toast.makeText(this, "This is my Toast message!",
            Toast.LENGTH_LONG).show();
    ConstantFile.TXTFILENAME = transfer_file.getName();
    goToNextActivity();
}

private void goToNextActivity() {
    Intent intent = new Intent(MainActivity.this, Main2Activity.class);
    startActivity(intent);
}}

This is the exception:

Process: com.phaseone_datatransferbetweenactivities, PID: 22385
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.RadioButton.getText()' on a null object reference
at com.phaseone_datatransferbetweenactivities.MainActivity.executeSelectedMethod(MainActivity.java:118)
at com.phaseone_datatransferbetweenactivities.MainActivity.access$000(MainActivity.java:23)
at com.phaseone_datatransferbetweenactivities.MainActivity$1.onClick(MainActivity.java:65)
at android.view.View.performClick(View.java:5265)
at android.view.View$PerformClick.run(View.java:21534)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
like image 664
User Avatar asked Feb 28 '17 06:02

User


People also ask

How can I check if a radio button group is selected?

Using Input Radio checked property: The Input Radio checked property is used to return the checked status of an Input Radio Button. Use document. getElementById('id'). checked method to check whether the element with selected id is check or not.

How do I know which radio is selected?

To check which radio button is selected in a form, we first get the desired input group with the type of input as an option and then the value of this selection can then be accessed by the val() method. This returns the name of the option that is currently selected.

How check RadioGroup is selected or not in android?

getCheckedRadioButtonId()==radioGroup. getChildAt(radio1). getId()) { radio 1 is checked; } else if(..... == radioGroup.

How check radio button is clicked or not in android?

You can check the current state of a radio button programmatically by using isChecked() method. This method returns a Boolean value either true or false. if it is checked then returns true otherwise returns false. Below is an example code with explanation in which we checked the current state of a radio button.


1 Answers

This is working perfectly:

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radio_group);

int radioButtonID = radioGroup.getCheckedRadioButtonId();

RadioButton radioButton = (RadioButton) radioGroup.findViewById(radioButtonID);

String selectedText = (String) radioButton.getText();
like image 164
vijay chhalotre Avatar answered Sep 26 '22 00:09

vijay chhalotre