2010-06-30 33 views
37

điều gì sẽ là cách nhận và gửi đúng sự kiện khi bật hoặc tắt một hộp kiểm. Trong C# tôi chỉ có thể dễ dàng nhấp đúp chuột và tất cả các mã sẽ được thực hiện cho tôi. nhưng trong Android nó có vẻ hơi mơ hồ hơn một chút. tôi nghĩ đến việc sử dụng trình xử lý sự kiện cảm ứng nhưng sau đó nếu người dùng có bàn phím, nó sẽ không phát hiện thay đổi vì nó không chạm vào. Tôi hình android nên có một sự kiện bản địa để thay đổi trạng thái hộp kiểm.Làm cách nào để nhận thay đổi kiểm tra sự kiện trên hộp kiểm android?

Trả lời

118
CheckBox repeatChkBx = (CheckBox) findViewById(R.id.repeat_checkbox); 
repeatChkBx.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{ 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     if (isChecked) 
     { 
      // perform logic 
     } 

    } 
}); 
+15

Trong khi đây là câu trả lời đúng, tôi tò mò phương pháp tốt nhất khi hộp kiểm nằm trong mục ListView và onCheckedChange được gọi mỗi khi người dùng cuộn qua nó. Bất kỳ cách nào để phân biệt khi nó được bắt đầu bởi người dùng và cập nhật listview? – rmooney

+1

^nhận xét này của @Rmooney là GOLD! Tôi đã có một vấn đề với bộ chuyển đổi RecyclerView và mỗi khi tôi cuộn nó đã đi điên gọi nhiều hơn một lần! Cảm ơn! –

+0

Trong bộ điều hợp, khi bạn đặt checkchange cho người giữ cụ thể đó. Trước tiên hãy xóa trình nghe, thay đổi giá trị, sau đó readd người nghe. Các hộp kiểm tự buộc gọi người nghe để bạn phải loại bỏ nó để đặt giá trị mà không có nó kích hoạt. – Tatarize

4

Kể từ CheckBox (cuối cùng) mở rộng View, bạn có thể sử dụng một OnClickListener tiêu chuẩn để phát hiện khi CheckBox là thực sự khai thác bởi người sử dụng (như trái ngược với các bản cập nhật ListView):

CheckBox repeatChkBx = (CheckBox) findViewById(R.id.repeat_checkbox); 
repeatChkBx.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     if (((CheckBox)v).isChecked()) { 
      // perform logic 
     } 
    } 
}); 
0

Hãy thử điều này

CheckBox checkbox=(CheckBox)findViewById(R.id.checkbox); 
checkbox.setOnClickListener(new View.OnClickListener() 
{ 
     @Override 
     public void onClick(View v) 
     { 
      if (checkbox.isChecked()) 
      { 
      //Perform action when you touch on checkbox and it change to selected state 
      } 
      else 
      { 
    //Perform action when you touch on checkbox and it change to unselected state 
      } 
     } 
    }); 
Các vấn đề liên quan