簡體   English   中英

CheckBox不響應檢查狀態(Android Studio)

[英]CheckBox doesnt reponse to check state (Android Studio)

假設我有2個復選框(“ checkbox1”和“ checkbox2”)並設置:SetChecked(true)表示“ checkbox1”,而SetChcked(false)表示“ checkbox2”。 我的目的是關聯它們並在單擊其中之一時在檢查狀態之間切換(如果選中了“ checkbox1”,並且選中了“ checkbox2”,則將選中“ checkbox2”,而將“ checkbox1”取消選中,反之亦然)
這是我的代碼:

final CheckBox ChckBoxNo = (CheckBox) promptsView.findViewById(R.id.ChkBoxNo);
final CheckBox ChckBoxYes = (CheckBox) promptsView.findViewById(R.id.ChkBoxYes);
ChckBoxNo.setChecked(true);
ChckBoxYes.setChecked(false);

ChckBoxNo.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (ChckBoxNo.isChecked()) {
            ChckBoxYes.setChecked(false);
        } else if (!ChckBoxNo.isChecked()) {
            ChckBoxYes.setChecked(true);
        }

    }

});

ChckBoxYes.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (ChckBoxYes.isChecked()) {
            ChckBoxNo.setChecked(false);
        } else if (!ChckBoxYes.isChecked()) {
            ChckBoxNo.setChecked(true);
        }

    }

});

   //these if's allways response to "ChckBoxNo.IsChecked()" ,even if its the 
     // opposite and "ChckBoxYes.isChcked()"          


   if(ChckBoxYes.isChecked())
   {do ...
         }
    else if (ChckBoxNo.isChecked()
      { do ...
               }

當我通過可見性運行該應用程序時,evreything很好,當我單擊“ ChckBoxYes”時,將其選中,並且未選中“ ChckboxNo”,反之亦然, 在獲得“ OnCheckedChangeListener”(ChckBoxNo.SetChcked(true ),ChckBoxYes.SetChecked(false), 即使它的對角和“ ChckBoxYes”已被選中),我該怎么做才能解決該問題? 謝謝 !

這不是解決問題的正確方法。 幸運的是,已經有一個名為RadioGroup的內置組件。 您可以執行以下操作:

讓您的Activity的xml文件如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RadioGroup
        android:id="@+id/radio_group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RadioButton
            android:id="@+id/radio_button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="CheckBox1" />

        <RadioButton
            android:id="@+id/radio_button2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="CheckBox2" />
    </RadioGroup>
</LinearLayout>

並且在您的Activity中,您可以與該組件進行交互,並在按下任何RadioButton時處理所需的任何操作,如下所示:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radio_group);
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if (checkedId == R.id.radio_button1) {
                    //First is checked
                } else if (checkedId == R.id.radio_button2) {
                    // Second is checked
                }
            }
        });
    }
}

暫無
暫無

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

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