开发中经常会遇见在一个编辑框或者文本框中选择日期,点击一个文本框弹出一个日期选择器的组件,在此基础上进行选择,废话少说,直接上代码:

先定义两个常量,后面选择的时候会用到

private static final int DIALOG = 1 ;

private static final int DIALOG2 = 2 ;

定义点击事件

View.OnClickListener datatextlist = new TextOnClickListener(DIALOG) ;

View.OnClickListener datatext2list = new Text2OnClickListener(DIALOG2) ;

text.setOnClickListener(datatextlist);

text1.setOnClickListener(datatext2list) ;

定义显示的对话框以及显示的日期

public Dialog onCreateDialog(int id){

Calendar calendar = Calendar.getInstance() ;

Dialog dialog = null ;

switch(id){

case 1 :

DatePickerDialog.OnDateSetListener datatextlist = new DatePickerDialog.OnDateSetListener() {

@Override

public void onDateSet(DatePicker picker, int year, int month, int dayOfMonth) {

text.setText(year+"-"+(month+1)+"-"+dayOfMonth) ;

}

};

dialog = new DatePickerDialog(MainActivity.this, datatextlist, calendar.get(Calendar.YEAR),

calendar.get(Calendar.MINUTE), calendar.get(Calendar.DAY_OF_MONTH)) ;

break;

case 2 :

DatePickerDialog.OnDateSetListener datatext2list = new DatePickerDialog.OnDateSetListener() {

@Override

public void onDateSet(DatePicker pick, int year, int month, int dayOfMonth) {

text1.setText(year+"-"+(month+1)+"-"+dayOfMonth) ;

}

};

dialog = new DatePickerDialog(MainActivity.this, datatext2list, calendar.get(Calendar.YEAR),

calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)) ;

break ;

}

return dialog ;

}

以下是实现点击事件显示对话框

private class TextOnClickListener implements View.OnClickListener{


private int dialogId = 0; //默认为0则不显示对话框

public TextOnClickListener(int dialogId) {

this.dialogId = dialogId;

}

@Override

public void onClick(View view) {

showDialog(dialogId);

}

}

private class Text2OnClickListener implements View.OnClickListener{


private int dialogId = 0; //默认为0则不显示对话框

public Text2OnClickListener(int dialogId) {

this.dialogId = dialogId;

}

@Override

public void onClick(View view) {

showDialog(dialogId);

}

}