开发安卓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) { } }