2014-01-16 68 views
5

我在我的Android活動必須點擊兩次調用EditText上的Android

  <EditText 
      android:id="@+id/payment_expiration" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/payment_expiration_label" 
      android:layout_centerHorizontal="true" 
      android:layout_marginLeft="25dp" 
      android:layout_marginRight="25dp" 
      android:clickable="true" 
      android:onClick="update_expiration_date" 
      android:editable="false" 
      android:layout_marginTop="-4dp" 
      android:cursorVisible="false" 
      android:maxLength="7" 
      android:padding="10dp" 
      android:textSize="13dp" /> 

有這個EDITTEXT一個onclick方法,你可以看到當

用戶點擊我把這個方法,它推出一個datePickerDialog:

public void update_expiration_date(View v){ 
    Log.i("","cliqué"); 
    picker.show(); 
    can_update_expiration_date = true; 

} 

我encouter的問題是:在第一時間就在我打開這個活動,用戶必須點擊兩次啓動對話框

但在那之後,點擊就足夠

我怎麼能解決這個問題

+0

你的onClick監聽器在哪裏?你有什麼?你在哪裏以及如何定義選取器?請分享您的代碼。 – ayorhan

+0

也許我對這個類似問題的回答可能有所幫助:http://stackoverflow.com/a/42092582/1617737 –

回答

13

檢查Similar Question

「第一次單擊只是將焦點設置到文本框,然後第二次點擊實際上得到處理作爲點擊。 「

嘗試設置android:focusable="false"

+0

謝謝hypd09,這是問題 – begiPass

+0

嗨,begiPass解決方案的工作原理,但有一個更好的。 –

0

你可以嘗試可對焦的解決方案,或者只是添加狀態跟蹤變量...

public class YourActivity extends Activity { 

private boolean clicked; 

protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    clicked = false; 
} 

public void update_expiration_date(View v){ 
    if(clicked == false){ 
     clicked = true; 
     return; 
    } else { 

    Log.i("","cliqué"); 
    picker.show(); 
    can_update_expiration_date = true; 
    } 

} 

} 
0

begiPass解決方案的工作,但有一個更好的。

隨着focusable false用戶永遠不會看不到哪個編輯文本被選中

更好的解決方案是使用onTouchListener。 le code:

edit.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       edit.setText(""); 
       v.setOnTouchListener(null); 
       return false; 
      } 
    }); 

不要忘記將OnTouchListener設置爲null。我們只想清除提示(只有一次)。

問候!

相關問題