【问题标题】:Unwilling EditText onTouchListener Function Call [duplicate]不愿意EditText onTouchListener函数调用[重复]
【发布时间】:2012-04-30 09:18:21
【问题描述】:

可能重复:
public boolean onKey() called twice?

我有一个 EditText 字段,它调用带有单选按钮的弹出视图。 PopUp 和 RadioGroup 的实现效果很好。但我只是意识到当按下或触摸到 EditText 时,onTouchListener 被调用了 2 次。我也刚刚意识到我的previous question 的原因是同样的问题。 这是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() 调用无法正常工作。可能是什么原因?真的很烦,谢谢。

【问题讨论】:

    标签: android android-edittext


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多