我的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;
}
我遇到的问题是:在我第一次打开此活动时,用户必须单击两次才能启动对话框
但在那之后,只需点击一下
如何解决此问题
答案 0 :(得分:15)
答案 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