EditText绑定日期控件DatePicker

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

		}
	}

猜你喜欢

转载自lucky1603.iteye.com/blog/1889355