4

可能重复:
公共布尔 onKey() 调用了两次?

我有一个 EditText 字段,它调用带有单选按钮的弹出视图。PopUp 和 RadioGroup 的实现效果很好。但我只是意识到当按下或触摸到 EditText 时,onTouchListener 被调用了 2 次。我也只是意识到我上一个问题的原因是同一个问题。这是EditText;

etOdemeSekli = (EditText)findViewById(R.id.etOdemeSekli);
        etOdemeSekli.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                inflatePopUpOdemeSekli();
                Log.d("****","Inflate");                    
            return false;
            }
        }); 

这是 EditText 的 xml

<EditText
    android:layout_weight="1"                   
    android:id="@+id/etOdemeSekli"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:hint="@string/odemeSekliHint"
    android:focusableInTouchMode="false">
</EditText>

由于这个双重调用,弹出窗口的行为很奇怪。dismiss() 调用无法正常工作。可能是什么原因?真的很烦,谢谢。

4

1 回答 1

12

双重调用是因为触摸监听器触发了两次(至少!),一次是手指落在 EditText 上时(ACTION_DOWN),一次是当您抬起手指时(ACTION_UP)。要修复它,只需确保仅在一种情况下激活即可。或者,您可以只设置一个onClick侦听器。

      public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
              inflatePopUpOdemeSekli();
            }

            return false;
      }
于 2012-04-30T01:18:21.197 回答