效果图如下:

日期和时间选择对话框,首先是要获得当前时间,这里用 java类中的Calendar来获得日期和时间(也可以用Date,但是不提倡,Date部分方法已经注释为过时), Calendar是一个抽象类,是通过getInstance()来获得实例

日期和时间选择对话框无需在像前面一样借组与AlertDialog.Builder来作为内容的载体,有直接的Dialog,其实源码里面已经包括了Builder。

1、DatePickerDialog 是日期Dialog,如下建立

dialog = new DatePickerDialog(this,
dateListener,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));

this 表示当前 Acitivity,表示这是当前Acitivity的对话框

dateListener为产生日期事件的监听器,这里是通过DatePickerDialog.OnDateSetListener来获得,代码如下

DatePickerDialog.OnDateSetListener dateListener =
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker,
int year, int month, int dayOfMonth) {
EditText editText =
(EditText) findViewById(R.id.editText);
//Calendar月份是从0开始,所以month要加1
editText.setText("你选择了" + year + "年" +
(month+1) + "月" + dayOfMonth + "日");
}
};

这里注意的是calendar.getCalendar(Calendar.MONTH), Calendar类中是从0开始取月份的,但是这里DatePickerDialog已经做了处理。

2、TimePickerDialog为时间选择对话框,实现代码如下:

dialog = new TimePickerDialog(this, timeListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
false); //是否为二十四制

timeListener 是一个TimePickerDialog.OnTimeSetListener 实例。

-------------------------------------------------------------------------------------------------------------------------

这是日期选择对话框                                                                        这是时间选择对话框

实现步骤:

第一步:一个用来显示选择的内容的输入框和两个用来显示日期和时间的按钮

res/layout/date_time_dialog_layout.xml

[xhtml] <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText android:id="@+id/editText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"/>
<Button android:id="@+id/btnDate"
android:text="显示日期选择对话框"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button android:id="@+id/btnTime"
android:text="显示时间选择对话框"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

第二步:

在DateTimeDialogActivity的OnCreate方法里面要对两个button进行单击事件处理,OnCreateDialog来处理产生对话框

src/com/dialog/activity/DateTimeDialogActivity.java

[java] package com.dialog.activity; 

import java.util.Calendar; 

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker; public class DateTimeDialogActivity extends Activity { private final int DATE_DIALOG = 1; private final int TIME_DIALOG = 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.date_time_dialog_layout); View.OnClickListener dateBtnListener =
new BtnOnClickListener(DATE_DIALOG); Button btnDate = (Button) findViewById(R.id.btnDate);
btnDate.setOnClickListener(dateBtnListener); View.OnClickListener timeBtnListener =
new BtnOnClickListener(TIME_DIALOG);
Button btnTime = (Button) findViewById(R.id.btnTime);
btnTime.setOnClickListener(timeBtnListener);
} protected Dialog onCreateDialog(int id) {
//用来获取日期和时间的
Calendar calendar = Calendar.getInstance(); Dialog dialog = null;
switch(id) {
case DATE_DIALOG:
DatePickerDialog.OnDateSetListener dateListener =
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker,
int year, int month, int dayOfMonth) {
EditText editText =
(EditText) findViewById(R.id.editText);
//Calendar月份是从0开始,所以month要加1
editText.setText("你选择了" + year + "年" +
(month+1) + "月" + dayOfMonth + "日");
}
};
dialog = new DatePickerDialog(this,
dateListener,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
break;
case TIME_DIALOG:
TimePickerDialog.OnTimeSetListener timeListener =
new TimePickerDialog.OnTimeSetListener() { @Override
public void onTimeSet(TimePicker timerPicker,
int hourOfDay, int minute) {
EditText editText =
(EditText) findViewById(R.id.editText);
editText.setText("你选择了" + hourOfDay + "时" +
minute + "分");
}
};
dialog = new TimePickerDialog(this, timeListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
false); //是否为二十四制
break;
default:
break;
}
return dialog;
}
/*
* 成员内部类,此处为提高可重用性,也可以换成匿名内部类
*/
private class BtnOnClickListener implements View.OnClickListener { private int dialogId = 0; //默认为0则不显示对话框 public BtnOnClickListener(int dialogId) {
this.dialogId = dialogId;
}
@Override
public void onClick(View view) {
showDialog(dialogId);
} }
}

最新文章

  1. [原创]MYSQL中利用外键实现级联删除和更新
  2. Python使用re模块正则式的预编译及pickle方案
  3. java 枚举
  4. 从vmware下载到Linux环境下jdk和maven的安装
  5. UVA 11076 - Add Again(组合)
  6. JQuery_进阶选择器
  7. Java Cardioid 心脏形曲线 (整理)
  8. c++11: less的用法
  9. 手势识别官方教程(7)识别缩放手势用ScaleGestureDetector.GestureDetector和ScaleGestureDetector.SimpleOnScaleGestureListener
  10. asp gridview批量删除和全选
  11. 序列化与反序列化 - BinaryFormatter二进制(.dat)、SoapFormatter(.soap)、XmlSerializer(.xml)
  12. scrapy的命令行
  13. 基于多进程的Tcp套接字服务器
  14. .gitignore总结
  15. 发展受阻第一至四季/全集Arrested迅雷下载
  16. android开发学习---开发一个简易的短信发送器
  17. Spring Boot 应用系列 2 -- Spring Boot 2 整合MyBatis和Druid
  18. SpringMvc+Spring+MyBatis+Maven
  19. laravel中的validate验证的使用案例:
  20. python一步高级编程

热门文章

  1. Workerman
  2. Keypress - 捕获键盘输入的JavaScript库
  3. 控件EditText
  4. Hibernate中createCriteria即QBC查询的详细用法
  5. [转载]如何解决failed to push some refs to git
  6. imx6 gpio分析
  7. PHP 初学之登录查询小case
  8. e652. Getting the Font Faces for a Font Family
  9. e558. 在Applet中多图片交互显示
  10. hdu 5044 树区间操作最后输出/ lca+dfs