2009-04-12 45 views
14

Tôi sử dụng các sự kiện onLongClick và onClick của nút để nhận dữ liệu đầu vào của người dùng. Bất cứ khi nào; người dùng nhấp và kích hoạt lâu trên sự kiệnLongClick, sự kiện onClick cũng được kích hoạt. Tôi không thể tìm thấy vấn đề của tôi. Mã của hai phương pháp được hiển thị bên dưới:Sự kiện LongClick cũng kích hoạt Sự kiện nhấp

@Override 
    public void onClick(View v) { 
     switch(((Button) v).getId()) 
     { 
     case R.id.enter: 
      EntertheNumber(); 
      break; 
     case R.id.clear: 
      CleartheNumber(); 
      break; 
     case R.id.number_zero: 
     case R.id.number_one: 
     case R.id.number_two: 
     case R.id.number_three: 
     case R.id.number_four: 
     case R.id.number_five: 
     case R.id.number_six: 
     case R.id.number_seven: 
     case R.id.number_eight: 
     case R.id.number_nine: 
      AddtotheNumber(mEditor, (Button) v); 
      break; 
     } 
@Override 
    public boolean onLongClick(View view) { 
     if(SMBGuesstheNumber.bDisplayFlagList) 
     { 
      theActiveButton = (Button) view; 
      showDialog(R.id.display_flaglist); 
     } 
     return false; 
    } 

Thực ra, dự án của tôi là Mã nguồn mở. Vì vậy, bạn có thể tìm thấy tất cả mã tại http://code.google.com/p/guessthenumber/

Cảm ơn bạn.

Trả lời

32

Tôi không chắc chắn thứ tự các sự kiện này xảy ra nhưng trình xử lý onLongClick trả về một bool để cho biết liệu sự kiện đã được xử lý hay chưa. Bạn nên trả về true nếu bạn xử lý nó để các sự kiện nhấp chuột khác sẽ không được gọi. Tôi không biết nếu điều này sẽ ngăn chặn việc ngăn chặn onClick() mặc dù.

Bạn cũng có thể biến những sự kiện đi và về sử dụng setClickable (boolean) và setLongClickable (boolean)

Bạn có thể tìm thấy thông tin này và nhiều hơn nữa về giao diện người dùng sự kiện here.

+2

Tại sao tôi bỏ lỡ boolean. Bạn chắc chắn đúng. trả về true nên ngăn onClick. Cảm ơn. –

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