2012-05-01 39 views
5

Duplicate có thể:
public boolean onKey() called twice?Android View.OnKeyListener: nhấp vào một lần, thực hiện hai lần

Đây là mã của tôi

public class TestKeyActivity extends Activity { 

private int i=1; 
private ScrollView sv; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    sv=(ScrollView) this.findViewById(R.id.read_scrollView); 

    sv.setOnKeyListener(new View.OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { 

     Toast.makeText(TestKeyActivity.this, "what is wrong!!!!"+(i++), 2).show(); 
      return true; 
      } 
      return false; 
     } 
    }); 
    } 
} 

tôi sử dụng ông giả lập Android và Eclipse, Tôi không biết tại sao, nhưng khi tôi bấm phím một lần, mã số của bánh mì nướng sẽ thực hiện hai lần. Có điều gì sai với mã của tôi không?

Trả lời

11

Tôi vừa trả lời một câu hỏi rất giống nhau (here). Vấn đề là bạn đang kích hoạt trên KeyEvent.ACTION_DOWNKeyEvent.ACTION_UP. Bạn chỉ nên thực thi mã của mình nếu KeyEvent.getAction() == KeyEvent.ACTION_UP

+0

có! vấn đề tương tự nhưng không giống nhau của nó là OnKeyListener, nó sẽ không có KeyEvent.ACTION_DOWN và KeyEvent.ACTION_UP loại vấn đề này và cảm ơn bạn. bạn có điểm số như vậy, tuyệt vời! – lok4u

+0

tôi có thể kiểm soát điều này bằng mã không: nếu tôi bấm phím và trong 1 giây, phím này sẽ bị khóa? là anyways – lok4u

+0

Hmmmm bạn đang cố gắng đạt được điều gì? – dmon

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