2012-04-29 7 views
4

可能性の重複:
public boolean onKey() called twice?不本意のEditText onTouchListener関数呼び出し

私はラジオボタンでポップアップ表示を呼び出すのEditTextフィールドを持っています。 PopUpとRadioGroupの実装はうまく動作します。しかし、私はちょうど押されたとき、またはTouchTextにタッチすると、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> 

ためのXMLです。 dismiss()呼び出しが正しく機能しません。理由は何でしょうか?それは本当に本当に迷惑な、ありがとうございます。

答えて

11

ダブルコールは、タッチリスナーが2回(少なくとも!)、1回はEditText(ACTION_DOWN)に、1回は指を離したとき(ACTION_UP)に発生するためです。これを修正するには、1つのケースでのみ有効にしてください。代わりに、代わりにonClickリスナーを設定することもできます。

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

      return false; 
     } 
関連する問題