让我的单选按钮在 Android 中被选中

Posted

技术标签:

【中文标题】让我的单选按钮在 Android 中被选中【英文标题】:Make my radio buttons become selected in Android 【发布时间】:2011-02-11 07:19:56 【问题描述】:

当我运行它并单击对话框时,我的单选按钮不会像预期的那样被选中

    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;
    



有什么建议吗?

【问题讨论】:

【参考方案1】:

变化:

maleRadioButton.setSelected(true);

收件人:

maleRadioButton.setChecked(true); 

Selected 表示视图被突出显示(类似于获得焦点),而 setChecked 设置项目的状态,来自 API:

public void setSelected(布尔值 已选择)自:API 级别 1

改变这个的选择状态 看法。可以选择或不选择视图。 注意选择不一样 作为焦点。通常选择视图 在 AdapterView 的上下文中 列表视图或网格视图;被选中的 view 是突出显示的视图。 参数选择 true 如果视图 必须选择,否则为假

【讨论】:

以上是关于让我的单选按钮在 Android 中被选中的主要内容,如果未能解决你的问题,请参考以下文章

是否可以更改android单选按钮组中的单选按钮图标

Android:如何在 Java 中以编程方式选中/取消选中 RadioGroup 中的单选按钮

如何通过检查另一个单选按钮来设置选中的单选按钮

如何取消选中或清除单选按钮组?

在选中的单选按钮上启用/禁用 RadDatePicker

选中的单选按钮已更改事件触发两次