簡體   English   中英

防止再次單擊RadioButton(如果已選中)

[英]Preventing a second click on RadioButton if it was already checked

我正在創建一個小測驗應用程序。 正如問題所提示的,如何在不禁用按鈕的情況下防止再次單擊? 當我單擊單選按鈕兩次時,它增加了2分而不是1分。非常感謝!

這是我的應用程序的圖片:

在此處輸入圖片說明

public void question1 (View view) {
    boolean checked = ((RadioButton) view).isChecked();

    switch (view.getId()) {
        case R.id.question1_9:
            if (checked) {
                scoreForRadioButtons += 1;
            }

        case R.id.question1_8:
            if (checked) {
                break;
            }
        case R.id.question1_7:
            if (checked) {
                break;
            }
    }
}

解決了

這就是我所做的:只需添加“ break”; 正確答案。

public void question1 (View view) {
    boolean checked = ((RadioButton) view).isChecked();

    switch (view.getId()) {
        case R.id.question1_9:
            if (checked) {
                pointForQ1 = 1;
                break;
            }
        case R.id.question1_8:
            if (checked) {
                pointForQ1 = 0;
            }
        case R.id.question1_7:
            if (checked) {
                pointForQ1 = 0;
            }
    }
}

簡短答案:

如果確實要使用以下選項,則可以在clickable RadioButton按鈕后將clickable屬性設置為false:

myRadioButton.setClickable(false);

長答案:

請勿為此使用單選按鈕。 用戶應該能夠根據需要多次單擊單選按鈕,而不會發生增加分數的情況。 這是單選按鈕的標准約定,一旦選中,一次又一次選擇,將不執行任何新代碼。 請注意,這僅在選擇期間單選按鈕的狀態未更改(狀態表示是否已選擇)的情況下

您的應用使用(或想要使用) RadioButtons方式不正確。 我建議為此使用按鈕,您可以在其中執行以下操作:

myButton.setEnabled(false);

編輯:

如果要使用戶單擊按鈕可見,可以做一些事情(更改其文字,更改背景顏色)。 對於此示例,您可以使用以下方法更改背景顏色:

myButton.setBackgroundColor(Color.GREEN);   // or whatever colour you choose

如果要執行此操作,請將以下內容添加到導入中:

import android.graphics.Color

如果您不想兩次單擊該單選按鈕,則單擊單選按鈕后,添加view.setEnabled(false); view.setClickable(false); 防止它再次單擊

為防止第二次單擊選中的單選按鈕,請禁用該單選按鈕

radioButton.setEnabled(false);

禁用單擊的按鈕,然后在選中另一個按鈕時啟用它

 public void question1 (View view) {
    //will enable all buttons
    Integer[] buttons = {R.id.question1_9, R.id.question1_8, R.id.question1_7};
    for (int i = 0; i < buttons.length; i++) {
        findViewById(buttons[i]).setEnabled(true);
    }

    RadioButton button = (RadioButton) view;

    if (button.isChecked()){
        switch (view.getId()) {
            case R.id.question1_9:
                    scoreForRadioButtons ++;
                    //will disable clicked button
                    button.setEnabled(false);
                    break;
            case R.id.question1_8:

                    break;
            case R.id.question1_7:

                    break;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM