当我运行时可以单击对话框,我的单选按钮不会像预期的那样被选中
package edu.elon.cs.mobile;
public class PTCalculator extends Activity{
private RadioButton maleRadioButton;
private RadioButton femaleRadioButton;
private EditText ageEdit;
private EditText pushUpsEdit;
private EditText sitUpsEdit;
private EditText mileMinEdit;
private EditText mileSecEdit;
private Button calculate;
private TextView score;
protected AlertDialog genderAlert;
private int currScore;
private int age;
private int sitUps;
private int runTime;
private int pushUps;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pt);
maleRadioButton = (RadioButton) findViewById(R.id.male);
femaleRadioButton = (RadioButton) findViewById(R.id.female);
ageEdit = (EditText) findViewById(R.id.ageEdit);
pushUpsEdit = (EditText) findViewById(R.id.pushupEdit);
sitUpsEdit = (EditText) findViewById(R.id.situpEdit);
mileMinEdit = (EditText) findViewById(R.id.minEdit);
mileSecEdit = (EditText) findViewById(R.id.secEdit);
calculate = (Button) findViewById(R.id.calculateButton);
calculate.setOnClickListener(calculateButtonListener);
score = (TextView) findViewById(R.id.scoreView);
genderAlert = makeGenderDialog().create();
}
private OnClickListener calculateButtonListener = new OnClickListener() {
@Override
public void onClick(View arg0) {
age = (Integer.parseInt(ageEdit.getText().toString()));
pushUps = (Integer.parseInt(pushUpsEdit.getText().toString()));
sitUps = (Integer.parseInt(sitUpsEdit.getText().toString()));
int min = (Integer.parseInt(mileMinEdit.getText().toString())*60);
int sec = (Integer.parseInt(mileSecEdit.getText().toString()));
runTime = min + sec;
if(maleRadioButton.isChecked()){
MalePTTest mPTTest = new MalePTTest(age, pushUps, sitUps, runTime);
currScore = mPTTest.malePTScore();
score.setText((Integer.toString(currScore)));
}else if(femaleRadioButton.isChecked()){
FemalePTTest fPTTest = new FemalePTTest(age, pushUps, sitUps, runTime);
currScore = fPTTest.femalePTScore();
score.setText((Integer.toString(currScore)));
}else
genderAlert.show();
}
};
public AlertDialog.Builder makeGenderDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Select a Gender")
.setCancelable(false)
.setPositiveButton("Female", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
femaleRadioButton.setSelected(true);
FemalePTTest fPTTest = new FemalePTTest(age, pushUps, sitUps, runTime);
currScore = fPTTest.femalePTScore();
score.setText((Integer.toString(currScore)));
}
})
.setNegativeButton("Male", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
maleRadioButton.setSelected(true);
MalePTTest mPTTest = new MalePTTest(age, pushUps, sitUps, runTime);
currScore = mPTTest.malePTScore();
score.setText((Integer.toString(currScore)));
}
});
return builder;
}
}
有什么建议吗?
答案 0 :(得分:11)
变化:
maleRadioButton.setSelected(true);
要:
maleRadioButton.setChecked(true);
选择表示视图突出显示(类似于具有焦点),而setChecked则从API设置项目的状态:
public void setSelected(boolean 选择)自:API Level 1
更改此选择状态 视图。可以选择或不选择视图。 请注意,选择不一样 作为焦点。通常选择视图 在AdapterView的上下文中 ListView或GridView;选中的 视图是突出显示的视图。 如果视图,则选择的参数为true 必须选择,否则为