Вопрос по android – Не желает EditText onTouchListener Вызов функции [дубликата]

4

Possible Duplicate:
public boolean onKey() called twice?

У меня есть поле EditText, которое вызывает всплывающее окно с переключателями. Реализация PopUp и RadioGroup работает хорошо. Но я просто понимаю, что при нажатии или Touch для EditText onTouchListener вызывается 2 раза. Я также просто понимаю, что причина моегопредыдущий вопрос это та же проблема. Вот текст EditText;

<code>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;
            }
        }); 
</code>

и вот XML для EditText

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

Из-за этого двойного вызова всплывающее окно ведет себя странно. Вызов dismiss () не работает должным образом. Что может быть причиной? Это действительно очень раздражает, спасибо.

Ваш Ответ

1   ответ
11

что сенсорный слушатель срабатывает дважды (по крайней мере!), Один раз, когда палец попадает на EditText (ACTION_DOWN), и один раз, когда вы поднимаете палец (ACTION_UP). Чтобы это исправить, просто убедитесь, что вы активируете только один случай. В качестве альтернативы, вы можете просто установитьonClick слушатель вместо.

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

            return false;
      }

Похожие вопросы