2015-12-14 29 views
5

Nút chuyển đổi không chuyển sang trạng thái TẮT trong giao diện người dùng cũng như tôi đặt onCheckedChangeListener. Nó vẫn bật cũng chuyển sang màu xám. Điều này xảy ra trên Trình mô phỏng với API15, nhưng không xuất hiện trên API19 trên thiết bị thực của tôi. Có phải mã hoặc trình mô phỏng không?
Cuối cùng sr.setChecked(false) chỉ cho phép nút chuyển sang màu xám nhưng không đặt thành TẮT.
dụ tối thiểu để tái tạo hành vi: lớp var:Reset-Button Reset không hoạt động bình thường

Switch sr; 
Switch srs; 

onCreate bao gồm:

sr = (Switch) findViewById(R.id.switch_ros); 
    srs = (Switch) findViewById(R.id.switch_ros_stream); 
    sr.setOnCheckedChangeListener(this); 
    srs.setOnCheckedChangeListener(this); 

onCheckedChanged bao gồm:

@Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    buttonView.setChecked(false); 
} 

EDIT: Thay vì Nexus_4_API_15 tôi đã cố gắng Nexus_5_API_19 và nó hoạt động tốt. Có vẻ là Android-Bug. Image of Simulators

+0

là thiết bị Samsung? damn họ luôn luôn làm điều đó ... –

+2

Bạn đang cố gắng đạt được điều gì ở đây ... tại sao bạn làm findViewById (R.id.switch_ros) bên trong onCheckedChanged khi bạn đã có Switch sr in oncreate – Nitesh

+0

cảm ơn bạn, chỉnh sửa. – ItsmeJulian

Trả lời

2

Nơi hai ở phía trên cùng của lớp học của bạn

private Switch sr; 
private Switch srs; 

Sau đó, trong onCreate()

@Override 
protected void onCreate(Bundle savedInstanceCreate) 
{ 
    [...]// other onCreate() stuff 
    sr = (Switch) findViewById(R.id.switch_ros); 
    srs = (Switch) findViewById(R.id.switch_ros_stream); 
    sr.setOnCheckedChangeListener(this); 
    srs.setOnCheckedChangeListener(this); 
} 

Sau đó OnCheckedChangeListener()

@Override 
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
{ 
    switch(buttonView.getId()) 
    { 
     case R.id.switch_ros: 
      //boolean wifi_state = isConnected(isChecked); 
      sr.setChecked(isChecked); 
      break; 
     case R.id.switch_ros_stream: 
      [...]// other switch function 
      srs.setChecked(isChecked); 
      break; 
    } 
} 

Sửa 1 Các onCheckedChangeList ener không thể tìm thấy nút chuyển đổi bạn đang cố bật/tắt. Điều này là do bạn đang ném nhiều nút chuyển đổi vào phương thức. Bạn sẽ cần phải sử dụng một trường hợp chuyển đổi hoặc nếu tuyên bố khác cho phương pháp để phân biệt nút nào bạn muốn chuyển đổi.

+0

Tôi đã chỉnh sửa câu hỏi để đơn giản hóa và theo đề xuất của bạn. Nhưng chưa được giải quyết – ItsmeJulian

+0

các chỉnh sửa của bạn sẽ thông qua một lỗi ngoại lệ không phải do setOnChangedListener cho nút chuyển đổi đầu tiên của bạn ở phía trên nút bắt đầu. tôi sẽ chỉnh sửa, xin vui lòng tư vấn cho những gì được kết nối()? –

+1

Matthew xin lỗi vì sự nhầm lẫn, một chỉnh sửa khác. Nó có vẻ là lỗi android – ItsmeJulian

Các vấn đề liên quan