基本上,我想要的是,一旦我点击翻译按钮,我想打印当前选中的单选按钮。我现在所拥有的是,只要单击一个单选按钮,它就会将其打印到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>
答案 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调用。