Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 700|回复: 0

android dialog —— 日期和时间选择对话框-  Android学习

[复制链接]

该用户从未签到

发表于 2011-10-24 14:35:21 | 显示全部楼层 |阅读模式
日期和时间选择对话框,首先是要获得当前时间,这里用 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
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    androidrientation="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
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);

                }

            

    }

}
复制代码


DateTimeDialogDemo.rar (44.24 KB, 下载次数: 7)
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:35:24 | 显示全部楼层

Re:android

又是沙发啊啊啊啊啊
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 14:35:28 | 显示全部楼层

Re:android

谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 11:34 , Processed in 0.389679 second(s), 47 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表