使用performClick始终调用My Button两次

时间:2012-06-29 20:10:06

标签: android android-button

我有一个简单的代码,在按下按钮或用户按“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

        }
    };

我怎么能阻止它。我已经看到我可以解决我去另一个ViewActivity,但我不想使用它们。

任何提示?谢谢!

2 个答案:

答案 0 :(得分:6)

  1. 由于有两项操作正在按KeyEvent.ACTION_DOWN& KeyEvent.ACTION_UP

  2. http://developer.android.com/reference/android/view/View.OnKeyListener.html

  3. 如果侦听器已使用该事件,则返回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;
}