Sending radio button data to next activity

风格不统一 提交于 2019-12-23 12:39:24

问题


I'm trying to allow the user to enter their Name, and click on one of three radio buttons, and click on a submit button. And on the next activity, it will display their name and the radio button they selected. I've managed to be able to send the name, but I'm not sure how to send the radio button selection. Can someone help?

This is what I have in the main activity layout .xml

<EditText
    android:id="@+id/operatorName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="25dp"
    android:ems="10"
    android:hint="@string/operator_name" />

<RadioGroup
    android:id="@+id/radioShifts"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginTop="10dp" >
    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/radio1"
        android:checked="true"
        android:onClick="onRadioButtonClicked" />
    <RadioButton
        android:id="@+id/radioButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/radio2"
        android:onClick="onRadioButtonClicked" />
    <RadioButton
        android:id="@+id/radioButton3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/radio3"
        android:onClick="onRadioButtonClicked" />
</RadioGroup>

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="28dp"
    android:text="@string/button1"
    android:onClick="onButton1" />

And I have this in the main_activity .java file:

    public final static String OP_NAME = "com.cyapps.downtimer.OPNAME";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onRadioButtonClicked(View view) {
        // Is the button now checked?
        boolean checked = ((RadioButton) view).isChecked();
        // Check which radio button was clicked
        switch(view.getId()) {
            case R.id.radioButton1:
                if (checked)
                    break;
            case R.id.radioButton2:
                if (checked)
                    break;
            case R.id.radioButton3:
                if (checked)
                    break;
        }
/*        Intent intent = new Intent(this, WinderDTActivity.class);
        EditText button = (EditText) findViewById(RadioGroup.getCheckedRadioButtonId());
        String radioChosen = button.getText().toString();
        intent.putExtra(RADIO_CHOSEN, radioChosen);*/
    }

    public void onButton1(View view) {
        Intent intent = new Intent(this, WinderDTActivity.class);
        EditText editText = (EditText) findViewById(R.id.operatorName);
        String opName = editText.getText().toString();
        intent.putExtra(OP_NAME, opName);
        startActivity(intent);
    }

The code in /* */ is what I think I should do.. But I'm not sure. Someone help please? I'll really appreciate it..


回答1:


String str; // store the text corresponding to  the RadioButton which is clicked 

   switch(view.getId()) {
                case R.id.radioButton1:
                    if (checked)
                     str = "button1Text";
                        break;
                case R.id.radioButton2:
                    if (checked) str = "button2Text";
                        break;
                case R.id.radioButton3:
                    if (checked) str = "button3Text";
                        break;
         }

            Intent intent = new Intent(this, WinderDTActivity.class);
            intent.putExtra("radioChosen", str); // pass "str" to the next Activity

EDIT : To recieve the data in the next activity, use

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String message= extras.getString("radioChosen");

}



回答2:


- Use switch to get the Radio button selected.

switch (types.getCheckedRadioButtonId()) {
      case R.id.sit_down:
        intent.putExtra(SIT_DOWN, "sitdown");
        break;
      case R.id.take_out:
        intent.putExtra(TAKE_OUT, "takeout");
        break;

      }

- Now just do the startActivity(intent);



来源:https://stackoverflow.com/questions/12862987/sending-radio-button-data-to-next-activity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!