【问题标题】:My Button is always called twice with performClick我的按钮总是被 performClick 调用两次
【发布时间】:2012-07-01 08:54:56
【问题描述】:

我有一个简单的代码,可以在按下按钮或用户按下“Enter”后在TextView 中显示字符串。当用户按下按钮时,一切都找到了,但是当按下“回车”时,它会调用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 的问题,但我不想使用这些。

有什么提示吗?谢谢!

【问题讨论】:

    标签: android android-button


    【解决方案1】:
    1. 因为按下KeyEvent.ACTION_DOWNKeyEvent.ACTION_UP有两个动作

    2. 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;
    }
    

    【讨论】:

    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2021-12-27
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多