java - 如果已在 Android 中单击,如何防止第二次单击单选按钮?

标签 java android

当有人已经点击了 RadioGroup 中的 RadioButton 时,我想停止对 RadioButton 的第二次点击。如果有人点击 2 次,则用户无法更改所选的点击。我试图用 boolean 来阻止这种情况,但它不起作用。我哪里错了?

这是我的代码:

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // checkedId is the RadioButton selected
            rb = (RadioButton) findViewById(checkedId);

            user_radio_answer = (String) rb.getText();

            rb.setOnClickListener(new View.OnClickListener() {

                private boolean isChecked = true;
                @Override
                public void onClick(View v) {

                    if (isChecked) {
                        if (rb.isChecked() ) {

                            isChecked = false;
                        }
                    }
                    if (correct_answer1.equals(user_radio_answer)) {
                        rb.setBackgroundColor(Color.GREEN);
                        //  Toast.makeText(getApplicationContext(), "Correct ☺ : " + user_radio_answer, Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getApplicationContext(), "Incorrect Answer :( ..Correct Answer :  " + correct_answer1, Toast.LENGTH_LONG).show();
                        rb.setBackgroundColor(Color.parseColor("#FF5733"));
                        answer1 = rb_answer1.getText().toString();
                        answer2 = rb_answer2.getText().toString();
                        answer3 = rb_answer3.getText().toString();
                        answer4 = rb_answer4.getText().toString();

                        if (answer1.equals(correct_answer1)) {
                            rb_answer1.setBackgroundColor(Color.GREEN);
                        }
                        if (answer2.equals(correct_answer1)) {
                            rb_answer2.setBackgroundColor(Color.GREEN);
                        }
                        if (answer3.equals(correct_answer1)) {
                            rb_answer3.setBackgroundColor(Color.GREEN);
                        }
                        if (answer4.equals(correct_answer1)) {
                            rb_answer4.setBackgroundColor(Color.GREEN);
                        }


                    }

                    new RadioHttpAsyncTask().execute("http:xxxxxx-xxxxxxxxxx-xxxxxxxx");
                }
            });
        }
    });

最佳答案

只需记住他们是否回答了问题,并记住生成第一个答案的 View (RadioButton),并在单击 RadioButton 时再次检查 RadioButton。这假定 RadioGroup 中的所有 RadioButton 都具有相同的 onClick 方法。

boolean answered = false;
RadioButton radioAnswer;
public void answer1(View view) {
    if (!answered) {
        radioAnswer = (RadioButton) view;
        answered = true;
    } else {
        radioAnswer.setChecked(true);
    }
}

关于java - 如果已在 Android 中单击,如何防止第二次单击单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49400521/

相关文章:

java - 从共享首选项中检索值时出错

java.lang.Thread.State : BLOCKED on java. lang.Object

java - 为什么 Eclipse 在尝试转换 applet 时返回错误,而 NetBeans 却没有?

android - 什么是主机和 Controller btsnoop_hci.log?

android - ButterKnife @OnClick 注释在 Kotlin fragment 中不起作用

java - Android java、数据库类中的Dao接口(interface)似乎很奇怪

android - 如何从android中的日志猫中读取 Activity 名称?

java - 在 String 字面值和 new String 对象之间创建了多少个对象

java - ksoap2 相当于 didStart/didEndElement?

java - 如何找到集合的所有可能拆分?