Как читать состояние RadioButton - PullRequest
0 голосов
/ 27 января 2012

У меня есть XML-файл с именем options.xml Я использую его для создания моего AlertDialog. Я также добавил кнопку Готово для AlertDialog. При нажатии кнопки «Готово» вызывается метод onClick, приведенный ниже. Однако независимо от того, какую кнопку RadioButton я проверил перед нажатием кнопки «Готово», я всегда получаю первую кнопку RadioButton как отмеченную, а остальные - как непроверенную. Я предполагаю, что то, что я делаю ниже, просто читает значения XML, а не фактические значения времени выполнения? Тогда как мне прочитать реальные значения времени выполнения?

    public void onClick(DialogInterface arg0, int arg1) {
            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
            View layout = inflater.inflate(R.layout.options, null);
            RadioButton a1 = (RadioButton)layout.findViewById(R.id.radio0);
            RadioButton a2= (RadioButton)layout.findViewById(R.id.radio1);
            RadioButton a3 = (RadioButton)layout.findViewById(R.id.radio2);
            RadioButton a4 = (RadioButton)layout.findViewById(R.id.radio3);
            boolean b1 = a1.isChecked();
            boolean b2 = a2.isChecked();
            boolean b3 = a3.isChecked();
            boolean b4 = a4.isChecked();

    }

РЕДАКТИРОВАТЬ: Решение, которое я использовал "Спасибо, я не проверял второй вариант, но я обнаружил, что AlertDialog имеет findViewById, и это было просто вопрос вызова после создания диалога. (Не нужно делать внутри onCreate или любая другая специальная функция). Вам просто нужно помнить, что нужно вызывать findViewById после того, как вы вызвали show () для диалога, в противном случае он не будет работать "

1 Ответ

0 голосов
/ 27 января 2012

Вы правы, вы читаете их значения xml, потому что пытаетесь найтиViewById в макете, накачанном непосредственно из xml.

Вы можете использовать mContext.findViewById (..), если mContext - это действие. В противном случае определите ваши RadioButton где-нибудь в onCreateDialog (..), а не внутри onClick (..), а затем используйте их для определения isChecked ().

Это аналогичный пример, когда мне нужно было получить значение EditText из метода onClick (..). Если вам нужен модификатор final, Eclipse должен сообщить вам. Это все в методе onCreateDialog (..).

case FIRST_TRANSLATE:
        View view = mHost.getLayoutInflater().inflate(R.layout.first_translate, null);
        //Define your radiobuttons here
        final EditText mLanguage = (EditText) view.findViewById(R.id.editText1);
        b.setView(view)
        .setTitle(R.string.dialog_first_translate_title)
        .setPositiveButton(sOkay, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int arg1) {
                //Retrieve their values here
                mHost.getSharedPreferences(States.INTERNAL_PREFS, 0).edit().putString("deflang", mLanguage.getText().toString()).commit();
                dialog.dismiss();
            }

        }).create();
...