/*这个demo演示了DatePickerDialog和时间对话框TimePickerDialog的用法*/
public class MainActivity extends Activity {
private TextView mDateDisplay;
private String mText;
private int mYear;
private int mMonth;
private int mDay;
private int mHour;
private int mMinute;
//定义Dialog的Id
private static final int TIME_12_DIALOG_ID=0;
private static final int TIME_24_DIALOG_ID=1;
private static final int DATE_DIALOG_ID=2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDateDisplay=(TextView) findViewById(R.id.displayDate);
//点击对应按钮显示对话框
setDialogOnClickListener(R.id.pickDate,DATE_DIALOG_ID);
setDialogOnClickListener(R.id.pickTime12,TIME_12_DIALOG_ID);
setDialogOnClickListener(R.id.pickTime24,TIME_24_DIALOG_ID);
//获取到当前日期和时间
Calendar c=Calendar.getInstance();
mYear=c.get(Calendar.YEAR);
mMonth=c.get(Calendar.MONTH);
mDay=c.get(Calendar.DAY_OF_MONTH);
mHour=c.get(Calendar.HOUR_OF_DAY);
mMinute=c.get(Calendar.MINUTE);
updateText();
}
private void setDialogOnClickListener(int buttonId, final int dialogId) {
Button bt=(Button) findViewById(buttonId);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//在4.2后就不推荐使用showDialog了,而是推荐使用DialogFragment;
//因此我们需要对代码进行一下修改
//showDialog(dialogId);
FragDialog frag=new FragDialog(dialogId);
frag.show(getFragmentManager(), String.valueOf(dialogId));
}
});
}
private class FragDialog extends DialogFragment{
public FragDialog(int dialogId) {
super();
Bundle args = new Bundle();
args.putInt("dialogId", dialogId);
setArguments(args);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
switch (getArguments().getInt("dialogId")) {
case TIME_12_DIALOG_ID:
return new TimePickerDialog(getActivity(), mTimeSetListener, mHour,
mMinute, false);
case TIME_24_DIALOG_ID:
return new TimePickerDialog(getActivity(), mTimeSetListener, mHour,
mMinute, true);
case DATE_DIALOG_ID:
return new DatePickerDialog(getActivity(), mDateSetListener, mYear,
mMonth, mDay);
}
return null;
}
private OnDateSetListener mDateSetListener=new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
mYear=year;
mMonth=monthOfYear;
mDay=dayOfMonth;
updateText();
}
};
private OnTimeSetListener mTimeSetListener = new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour=hourOfDay;
mMinute=minute;
updateText();
}
};
}
public void updateText(){
mText= new StringBuilder()
//因为月基于0开始,所以月需要加1
.append(mMonth+1).append("-")
.append(mDay).append("-")
.append(mYear).append("-")
.append(pad(mHour)).append(":")
.append(pad(mMinute)).toString();
mDateDisplay.setText(mText);
}
private String pad(int c) {
if(c>=10){
return String.valueOf(c);
}
return "0"+c;
}
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/displayDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/pickDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Change the date"/>
<Button
android:id="@+id/pickTime12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Change the time(12 Hours)"/>
<Button
android:id="@+id/pickTime24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Change the time(24 Hours)"/>
</LinearLayout>