您的位置:首页 > 移动开发 > Android开发

Android SDK Tutorials系列 - Hello Views - Date Picker

2011-11-13 20:10 447 查看


Date Picker

可以用DatePicker窗口小部件来选择日期,用户可以选择年月日。

本教程里,你将创建一个DatePickerDialog对话框,点击按钮会弹出一个悬浮的日期选择器对话框。当用户设置日期以后,一个TextView会显示刚设置的日期。

创建一个工程:HelloDatePicker.

打开
res/layout/main.xml
并修改如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/dateDisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""/>
<Button android:id="@+id/pickDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Change the date"/>
</LinearLayout>


采用LinearLayout布局,里面用一个TextView来显示日期,和一个Button,点击它会打开DatePickerDialog对话框。

打开
HelloDatePicker.java
,添加下列成员变量:
private TextView mDateDisplay;
private Button mPickDate;
private int mYear;
private int mMonth;
private int mDay;

static final int DATE_DIALOG_ID = 0;


第一组变量定义了界面里的View(TextView、Button)以及日期的年月日。静态整数
DATE_DIALOG_ID
是Dialog的ID,用来创建日期选择器。

修改
onCreate()
方法如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// capture our View elements
mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
mPickDate = (Button) findViewById(R.id.pickDate);

// add a click listener to the button
mPickDate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});

// get the current date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);

// display the current date (this method is below)
updateDisplay();
}


首先,加载main.xml布局文件。然后使用findViewById(int)来引用TextView和Button。

然后为Button设置一个
View.OnClickListener点击事件监听器,当Button被点击后,showDialog(int)
方法会被调用,该方法创建一个ID为DATE_DIALOG_ID的日期选择器对话框。

showDialog(int)
方法让当前Activity管理对话框的生命周期,同时调用
onCreateDialog(int)
(将在下一步定义)回调函数显示对话框。

在设置点击事件监听器以后,创建一个Calendar对象,读取当前年、月、日。最后,调用
updateDisplay()
方法,让TextView显示当前日期。



定义
updateDisplay()
方法:
// updates the date in the TextView
private void updateDisplay() {
mDateDisplay.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(mMonth + 1).append("-")
.append(mDay).append("-")
.append(mYear).append(" "));
}


这个方法用成员变量年月日的值设置TextView的显示内容;
mDateDisplay
, 也在前面声明和初始化过了。

创建一个新的成员变量
DatePickerDialog.OnDateSetListener
并初始化:
// the callback received when the user "sets" the date in the dialog
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
updateDisplay();
}
};


DatePickerDialog.OnDateSetListener
监听用户设置时间操作(用户点击“Set”("设置")按钮)。点击"Set"以后,
onDateSet()
方法会被调用来更新
mYear
,
mMonth
,
mDay的值,并调用updateDisplay()方法来更新TextView的显示内容。


现在添加
onCreateDialog(int)
回调函数:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this,
mDateSetListener,
mYear, mMonth, mDay);
}
return null;
}


这是一个Activity回调函数,传递给它的整型ID来自
showDialog(int)
方法(这个方法在按钮的View.OnClickListener监听器里被调用)的参数。当这个ID满足switch条件时,会使用按钮点击事件监听器View.OnClickListener(前面步骤里创建的)、年月日成员变量(用来初始化时间选择器窗口小部件的显示日期)来实例化一个DatePickerDialog (日期选择器对话框)。

运行应用。

当你按下"Change the date"(“更改日期”)按钮,会看到以下画面:



返回 Android
SDK Tutorials系列 - Hello Views

转载请注明出处:/article/11130785.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: