不愿意使用EditText onTouchListener函数调用

时间:2012-04-29 23:53:04

标签: android android-edittext

  

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

我有一个EditText字段,它使用单选按钮调用popUp视图。 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的

<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>

由于这个双重调用,popup很奇怪。 dismiss()调用无法正常运行。可能是什么原因?这真的很烦人,谢谢你。

1 个答案:

答案 0 :(得分:11)

双重调用是因为触摸侦听器触发两次(至少!),一次触发手指落在EditText(ACTION_DOWN)上,一次触发手指(ACTION_UP)。要修复它,只需确保只激活一个案例。或者,您可以设置onClick侦听器。

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

            return false;
      }