我正在尝试创建一个简单的表单活动,以便学习如何使用Eclipse提供的各种组件。在我到达单选按钮之前,我做得很好。
该应用程序允许用户填写整个表单,然后单击“发送”按钮。单击发送按钮后,我创建一个新意图,将所有表单数据传递到意图中,并启动一个新活动作为一种确认/摘要页面。
如何检索用户点击的哪个单选按钮?我总共有五个。 下面是我的onCreate方法的代码。
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.feedback_scroll);
//References to XML
name = (EditText)findViewById(R.id.nameEntryBox);
county = (Spinner)findViewById(R.id.countySpinner);
//Set array adapter
county.setAdapter(fillCountySpinner());
submitBtn = (Button)findViewById(R.id.submitFormBtn);
atmo1 = (RadioButton)findViewById(R.id.arad1);
atmo2 = (RadioButton)findViewById(R.id.arad2);
atmo3 = (RadioButton)findViewById(R.id.arad3);
atmo4 = (RadioButton)findViewById(R.id.arad4);
atmo5 = (RadioButton)findViewById(R.id.arad5);
ser1 = (RadioButton)findViewById(R.id.srad1);
ser2 = (RadioButton)findViewById(R.id.srad2);
ser3 = (RadioButton)findViewById(R.id.srad3);
ser4 = (RadioButton)findViewById(R.id.srad4);
ser5 = (RadioButton)findViewById(R.id.srad5);
rating = (RatingBar)findViewById(R.id.ratingBar1);
//Add a listener to the submit button - Anonymous inner class
submitBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Create a new Intent
Intent i = new Intent(v.getContext(), FeedbackResults.class);
choice = (String)county.getSelectedItem();
//Add extra parameters
//Name
i.putExtra("name", name.getText());
//County
i.putExtra("county", choice);
//Dob
//Atmosphere
i.putExtra("atmosphere", atmos);
//Service
i.putExtra("service", serv);
//Rating
i.putExtra("rating", rating.getRating());
//Start new Activity that will display a review of the customers feedback
startActivity(i);
//Toast message
Toast.makeText(v.getContext(), "Thank you for your feedback!", Toast.LENGTH_SHORT).show();
}
});
}
我正在查看与此网站上的问题相关的另一个主题。他们说要使用switch语句。我理解它的逻辑并在方法中写到这样做,但我不知道如何将View变量传递给它。这个视图变量是什么?这是我写的方法。
public void onRadioButtonClicked1(View v){
switch(v.getId()){
case R.id.arad1:
atmos = "1";
break;
case R.id.arad2:
atmos = "2";
break;
case R.id.arad3:
atmos = "3";
break;
case R.id.arad4:
atmos = "4";
break;
case R.id.arad5:
atmos = "5";
break;
}
}
非常感谢任何反馈!
答案 0 :(得分:3)
每组单选按钮应该在一个组中,我假设您已经在XML文件中执行了此操作。
假设,那么您可以通过执行以下操作获取已检查单选按钮的ID:
int id = ((RadioGroup)findViewById( R.id.radio_group )).getCheckedRadioButtonId();
您可以在Activity
的任何位置执行此操作,或者如果您使用Fragment
,则只需在其中添加getView()
:
int id = ((RadioGroup)getView().findViewById( R.id.radio_group )).getCheckedRadioButtonId();
所以我会改变你的onClick
:
public void onClick(View v) {
// Create a new Intent
Intent i = new Intent(v.getContext(), FeedbackResults.class);
choice = (String)county.getSelectedItem();
int id = ((RadioGroup)findViewById( R.id.radio_group )).getCheckedRadioButtonId();
atmos = getAtmos( id );
...
}
private int getAtmos( int id ) {
switch( id ) {
case R.id.arad1:
atmos = "1";
break;
case R.id.arad2:
atmos = "2";
break;
case R.id.arad3:
atmos = "3";
break;
case R.id.arad4:
atmos = "4";
break;
case R.id.arad5:
atmos = "5";
break;
}
return atmos;
}