单选按钮只发生在按钮上,单击android studio

时间:2015-06-25 05:36:26

标签: android

基本上,我想要的是,一旦我点击翻译按钮,我想打印当前选中的单选按钮。我现在所拥有的是,只要单击一个单选按钮,它就会将其打印到textview,但我希望它只在我单击“翻译”按钮后才会发生。任何帮助将不胜感激!

public class MainActivity extends ActionBarActivity {

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


    public void Translate(View view) {
        onRadioButtonClicked(view);

    }

    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.radio_hi:
                if (checked) { display("hi"); }
                break;
            case R.id.radio_bus:
                if (checked) { display("bus"); }
                break;
            case R.id.radio_bathroom:
                if (checked) { display("bathroom"); }
                break;
            case R.id.radio_beer:
                if (checked) { display("beer"); }
                break;
            case R.id.radio_cost:
                if (checked) { display("cost"); }
                break;
            default:
                display("no button clicked");
        }
    }



    private void display(String str) {
        TextView translateTextView = (TextView) findViewById(R.id.display);
        translateTextView.setText(str);
    }
}







    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Translate"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/button"
        android:onClick="Translate"/>

    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/radioGroup"
        android:layout_below="@+id/spinner1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="37dp">
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/radio_hi"
            android:text="@string/hi"
            android:onClick="onRadioButtonClicked"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/radio_bus"
            android:text="@string/taxi"
            android:onClick="onRadioButtonClicked"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/radio_bathroom"
            android:text="@string/bathroom"
            android:onClick="onRadioButtonClicked"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/radio_beer"
            android:text="@string/beer"
            android:onClick="onRadioButtonClicked"/>
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/radio_cost"
            android:text="@string/cost"
            android:onClick="onRadioButtonClicked"/>
    </RadioGroup>

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题/代码,我不是百分百肯定的。 但是,如果您只想更改翻译按钮上的文字,请单击以下内容:

public void Translate(View view) {

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


        int btnID = radioGroup.getCheckedRadioButtonId();

        //display the String based on the Radio Button ID
        switch (btnID) {
        case R.id.radio_hi:
            if (checked) { display("hi"); }
            break;
        case R.id.radio_bus:
            if (checked) { display("bus"); }
            break;
        case R.id.radio_bathroom:
            if (checked) { display("bathroom"); }
            break;
        case R.id.radio_beer:
            if (checked) { display("beer"); }
            break;
        case R.id.radio_cost:
            if (checked) { display("cost"); }
            break;
        default:
            display("no button clicked");
    }
 }

基本上它只是使用当前检查的无线电btn ID来确定应该在TextView中打印的内容。

只需看看getCheckedRadioButtonId此功能可能会解决您的问题。

同时删除单选按钮中的onRadioButtonClicked调用。