必须单击两次才能调用edittext android的onclick方法

时间:2014-01-16 15:49:25

标签: android events click android-edittext launch

我的android活动中有这个editText

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

正如用户点击

时所看到的那样

我调用此方法启动datePickerDialog:

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

}

我遇到的问题是:在我第一次打开此活动时,用户必须单击两次才能启动对话框

但在那之后,只需点击一下

如何解决此问题

4 个答案:

答案 0 :(得分:15)

检查Similar Question

“第一次点击只是将焦点设置为TextBox,然后第二次点击实际上会被点击处理。”

尝试设置android:focusable="false"

答案 1 :(得分: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;
    }

}

}

答案 2 :(得分:0)

begiPass解决方案有效,但有更好的。

如果焦点为false,则用户永远无法看到选择了哪个edittext。

更好的解决方案是使用onTouchListener。我的示例代码:

{ one: [ '$10', '1000', 'red' ],
  two: [ '$20', '2000', 'green' ],
  three: [ '$30', '3000', 'blue' ] }

不要忘记将OnTouchListener设置为null。我们只想清除提示(只有一次)。

问候!

答案 3 :(得分:0)

使用OnTouchListener处理它:

Imports MySql.Data.MySqlClient

Public Class koneksi
    Public conn As MySqlConnection
    Dim database As String = "server=192.168.0.199;database=db_wafiq;uid=***;pwd=***;"
    Public Sub konek()
        Try
            conn = New MySqlConnection(database)
            conn.Open()
            MsgBox("Koneksi Berhasil")
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            conn.Close()
        End Try
    End Sub
End Class