Android SDK Tutorials系列 - Hello Views - Date Picker

来源:互联网 发布:水文气象观测后台软件 编辑:程序博客网 时间:2024/05/16 17:56

Date Picker

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

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

  1. 创建一个工程:HelloDatePicker.
  2. 打开 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对话框。

  3. 打开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,用来创建日期选择器。

  4. 修改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)来引用TextViewButton

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

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

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


  5. 定义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, 也在前面声明和初始化过了。

  6. 创建一个新的成员变量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的显示内容。

  7. 现在添加onCreateDialog(int) 回调函数:
    @Overrideprotected 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 (日期选择器对话框)。

  8. 运行应用。

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

Hello DatePicker


返回 Android SDK Tutorials系列 - Hello Views


转载请注明出处:http://blog.csdn.net/mtding/article/details/6965738
原创粉丝点击