开发安卓app的时候,有时候需要给EditText绑定日期控件DatePicker,网络上有一篇文章就是讲如何绑定的,网络上搜索到的基本上都是这篇文章,被转来转去,代码确实可以用,但是原作者并没有写得很详细,然后还有点小问题,我在它的基础上稍微修改了下:
private int mYear;
private int mMonth;
private int mDay;
private EditText lzdate;
private EditText sxdate;
private int timeFlag=0;
。
。
。
lzdate = (EditText) findViewById(R.id.lzdate);
sxdate = (EditText) findViewById(R.id.sxdate);
/**
* 点击EditText弹出日期选择框
*/
lzdate.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
timeFlag = 0;
showDialog(0);
}
});
sxdate.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
timeFlag = 1;
showDialog(1);
}
});
lzdate.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus == true) {
timeFlag = 0;
showDialog(0);
hideIM(v);
}
}
});
sxdate.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus == true) {
timeFlag = 1;
showDialog(1);
hideIM(v);
}
}
});
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mYear = year;
String mm;
String dd;
if (monthOfYear <= 9) {
mMonth = monthOfYear + 1;
mm = "0" + mMonth;
} else {
mMonth = monthOfYear + 1;
mm = String.valueOf(mMonth);
}
if (dayOfMonth <= 9) {
mDay = dayOfMonth;
dd = "0" + mDay;
} else {
mDay = dayOfMonth;
dd = String.valueOf(mDay);
}
mDay = dayOfMonth;
if (timeFlag == 0) {
lzdate.setText(String.valueOf(mYear) + "-" + mm + "-"+ dd);
} else {
sxdate.setText(String.valueOf(mYear) + "-" + mm + "-" + dd);
}
}
};
protected Dialog onCreateDialog(int id) {
//原作者的代码中没有下面的四行,这样会造成 在第一个EditText选择了日期后,再给另外一个EditText选择日期时,会发生错误
Calendar c = Calendar.getInstance();
mYear=c.get(Calendar.YEAR);
mMonth=c.get(Calendar.MONTH);
mDay=c.get(Calendar.DAY_OF_MONTH);
switch (id) {
case 0:
return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,mDay);
case 1:
return new DatePickerDialog(this, mDateSetListener, mYear, mMonth,mDay);
}
return null;
}
// 隐藏手机键盘
private void hideIM(View edt) {
try {
InputMethodManager im = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
IBinder windowToken = edt.getWindowToken();
if (windowToken != null) {
im.hideSoftInputFromWindow(windowToken, 0);
}
} catch (Exception e) {
}
}