package com.example.datedialog;
/*博客作者 X_x_O_0_o
*日期2015-1-21
*程序描述:两个按钮一个文本框。单击第一个按钮可以获取日期,单击第二个按钮获取时间。放到文本框中。
*
* */
import java.util.Calendar;
import android.R.string;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
public class MainActivity extends Activity {
private Button button1, button2;
private EditText edittext1;
private DatePickerDialog dateDialog; // Dialog的声明方式。
private TimePickerDialog timeDialog;
private int year, month, day; // 用变量还是要先声明。
private int hour, min;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) this.findViewById(R.id.button1); // 实例化
button2 = (Button) this.findViewById(R.id.button2);
// edittext1 = (EditText)this.findViewById(R.id.edi)
edittext1 = (EditText) findViewById(com.example.datedialog.R.id.editText1);
Calendar calendar = Calendar.getInstance(); // 实例化一个日历。并设置三个参数。
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
hour = calendar.get(Calendar.HOUR_OF_DAY);
min = calendar.get(Calendar.MINUTE);
//下面是第一个按钮的设置。就两步。先设置对话框,再设置按钮。
// 下面的第一个参数是this,第二个参数callBack是对话框确定后返回的事件,把要做的时间工作放这里。
dateDialog = new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
// 因为月份上是0到11,所以正确显示要加上1.
String dateset = year + "-" + (monthOfYear + 1) + "-"
+ dayOfMonth;
edittext1.setText(dateset);
}
}, year, month, day);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 在button的单击事件中只需要启用对话框的show方法即可。
dateDialog.show();
}
});
//第二个按键获取时间的设置。其中hour和min都是从Calendar中得到的。
// 下面这个第一个参数不知道只用this也行,最后一个参数是是否为24进制。
timeDialog = new TimePickerDialog(this,
new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
// TODO Auto-generated method stub
String timeshow = hourOfDay + ":" + minute;
edittext1.setText(timeshow);
}
}, hour, min, true);
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
timeDialog.show();
}
});
}
}
收获:使用日期时间对话框其实很简单。
步骤就是:声明对话框那些细节就不说了。设置对话框,直接在new的时候设置,在其中第二个参数中设置获取时间的对应事件(对话框获取)。最后用button的单击事件来调用对话框的显示就可以了。
部分代码:
1、时间对话框的设置
<span style="white-space:pre"> </span>timedialog = new TimePickerDialog(context, callBack, hourOfDay, minute, is24HourView)
参数context用this,hourOfDay和minute用Calendar获取时间。最后一个参数用布尔型来表示其是否是24小时制。
重要的是第二个参数callBack,它是个回调方法。用new OnTimeSetListener()方法。这个方法里设置的是响应这个事件(如获取时间)的内容。
2、日期对话框的设置
<span style="white-space:pre"> </span>dateDialog = new DatePickerDialog(context, callBack, year, monthOfYear, dayOfMonth);
new出来的同时设置就可以了。第一个参数用this(可以加上MainActivity),后面三个参数是年月日参数。
重要的还是callBack参数,用回调方法。用new OnDateSetListener方法,其中的函数中也是一个响应的事件即可。
3、调用对话框
在button中单击事件中调用 dateDialog.show(); 即可。
4、获取系统日期
获取日期和时间都是用Calendar。
从声明到获取:
<span style="white-space:pre"> </span> Calendar calendar = Calendar.getInstance(); // 实例化一个日历。并设置三个参数。
year = calendar.get(Calendar.YEAR);<span style="white-space:pre"> </span>//变量要在前面声明是int型
month = calendar.get(Calendar.MONTH);<span style="white-space:pre"> </span>//变量没有秒。
day = calendar.get(Calendar.DAY_OF_MONTH);
hour = calendar.get(Calendar.HOUR_OF_DAY);<span style="white-space:pre"> </span>//这里用HOUR和HOUR_OF_DAY有时候会有区别,后者是24小时制。
min = calendar.get(Calendar.MINUTE);
运行结果: