4

我试图让用户输入他们的姓名,然后单击三个单选按钮之一,然后单击提交按钮。在下一个活动中,它将显示他们的姓名和他们选择的单选按钮。我设法能够发送名称,但我不确定如何发送单选按钮选择。有人可以帮忙吗?

这就是我在主要活动布局 .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" />

我在 main_activity .java 文件中有这个:

    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);
    }

/* */ 中的代码是我认为我应该做的。但我不确定。有人帮忙吗?我会很感激的。。

4

2 回答 2

4
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

编辑: 要在下一个活动中接收数据,请使用

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

}
于 2012-10-12T16:06:48.167 回答
0

-用于switch选择单选按钮。

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;

      }

-现在只需执行startActivity(intent);

于 2012-10-12T16:08:58.030 回答