我有一个简单的代码,在按下按钮或用户按“Enter”后显示TextView
中的字符串。当用户按下按钮时,所有都被找到,但是当按下'enter'时,它调用performClick()
来调用与按钮相同的功能。但我的功能总是被叫两次:
private OnKeyListener ChampKeyListener = new OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(keyCode == KeyEvent.KEYCODE_ENTER)
{
recherche.performClick(); // recherche is my button
}
return false;
}
};
private OnClickListener RechercheListener = new OnClickListener() {
@Override
public void onClick(View v) {
//whatever I have tried here it is always called twice
}
};
我怎么能阻止它。我已经看到我可以解决我去另一个View
或Activity
,但我不想使用它们。
任何提示?谢谢!
答案 0 :(得分:6)
由于有两项操作正在按KeyEvent.ACTION_DOWN
& KeyEvent.ACTION_UP
http://developer.android.com/reference/android/view/View.OnKeyListener.html
如果侦听器已使用该事件,则返回true
,否则返回false
。
试试吧......
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
if(keyCode == KeyEvent.KEYCODE_ENTER)
{
recherche.performClick(); // recherche is my button
return true;
}
}
return false;
}
答案 1 :(得分:2)
可能是事件被触发两次,一次按下该键,一次被释放。尝试:
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_ENTER &&
event.getAction() == KeyEvent.ACTION_DOWN) {
recherche.performClick(); // recherche is my button
return true; // consume event
}
return false;
}