Сделайте так, чтобы мои переключатели стали выделенными в Android - PullRequest
4 голосов
/ 23 апреля 2010

Когда я запускаю это и могу щелкнуть диалоговое окно, мои радиокнопки не становятся выделенными, как предполагалось

    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 Ответ

11 голосов
/ 23 апреля 2010

Изменение:

maleRadioButton.setSelected(true);

Кому:

maleRadioButton.setChecked(true); 

Выбранный означает, что представление подсвечивается (аналогично фокусировке), тогда как setChecked устанавливает состояние элемента из API:

public void setSelected (логическое значение selected) Так как: API Level 1

Изменяет состояние выбора этого представления.Вид может быть выбран или нет.Обратите внимание, что выбор не совпадает с фокусом.Представления обычно выбираются в контексте AdapterView, такого как ListView или GridView;выбранный вид - это вид, который выделен.Параметры выбираются true, если необходимо выбрать представление, иначе false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...