DatePickerDialog和TimePickerDialog使用示例

简介: MainActivity如下: package cc.test;import java.util.Calendar;import java.

MainActivity如下:

package cc.test;

import java.util.Calendar;
import java.util.Locale;
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.TimePicker;
/**
 * Demo描述:
 * DatePickerDialog和TimePickerDialog使用示例
 * 
 * 参考资料:
 * http://blog.csdn.net/lilu_leo/article/details/7282272
 * Thank you very much
 * 
 */
public class TestDatePickerAndTimePickerActivity extends Activity {
	public int year;  
	public int month;  
	public int day;  
	public int hour;  
	public int minute; 
	public Calendar calendar;
	private Button mDatePickerButton;
	private Button mTimePickerButton;
    public final static int DATE_PICKER=9527;
    public final static int TIME_PICKER=9528;
    public DatePickerDialog mDatePickerDialog;
    public TimePickerDialog mTimePickerDialog;
    private DatePickerDialog.OnDateSetListener mDateSetListener;
    private TimePickerDialog.OnTimeSetListener mTimeSetListener;
    public boolean isCreatePickerDialog=true;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();
    }
    
    private void init(){
    	mDatePickerButton=(Button) findViewById(R.id.datePickButton);
    	mDatePickerButton.setOnClickListener(new OnClickListenerImpl());
    	
    	mTimePickerButton=(Button) findViewById(R.id.timePickButton);
    	mTimePickerButton.setOnClickListener(new OnClickListenerImpl());
    	
    	//监听DatePicker的set按钮
        mDateSetListener=new DatePickerDialog.OnDateSetListener() {		
    		@Override
    		public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
    			System.out.println("---> 设置后: year="+year+", month="+monthOfYear+",day="+dayOfMonth);			
    		}
    	};
    	
    	//监听TimePicker的set按钮
    	mTimeSetListener=new TimePickerDialog.OnTimeSetListener() {
			@Override
			public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
				System.out.println("---> 设置后: hour="+hourOfDay+",minute="+minute);
			}
		};
    	
    }
    
    
	private class OnClickListenerImpl implements View.OnClickListener {
		@Override
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.datePickButton:
                showDialog(DATE_PICKER);
				break;
			case R.id.timePickButton:
				showDialog(TIME_PICKER);
				break;
			default:
				break;
			}
		}
	}
	
	
	
	
	//覆写Activty的onCreateDialog(int id)方法
	//注意:
	//1 第一次显示pickerDialog的时候会调用onCreateDialog()和onPrepareDialog()
	//2  随后每次只会调用onPrepareDialog()方法
	//  所以需要在onPrepareDialog()方法中获取最新时间再设置
	@Override
	protected Dialog onCreateDialog(int id) {
		System.out.println("---> onCreateDialog()");
		getCurrentTime();
		switch (id) {
		case DATE_PICKER:
			mDatePickerDialog=new DatePickerDialog(this, mDateSetListener, year, month, day);
			return mDatePickerDialog;
		case TIME_PICKER:
			mTimePickerDialog=new TimePickerDialog(this, mTimeSetListener, hour, minute, true);
			return mTimePickerDialog;
		default:
			break;
		}
		return super.onCreateDialog(id);
	}
	
	//覆写Activty的onPrepareDialog(int id, Dialog dialog)方法
	@Override
	protected void onPrepareDialog(int id, Dialog dialog) {
		super.onPrepareDialog(id, dialog);
		if (!isCreatePickerDialog) {
			getCurrentTime();
			switch (id) {
			case DATE_PICKER:
				mDatePickerDialog.updateDate(year, month, day);
				break;
			case TIME_PICKER:
				mTimePickerDialog.updateTime(hour, minute);
				break;
			default:
				break;
			}
		}
		isCreatePickerDialog = false;
	}
	
	
	
	  private void getCurrentTime(){
	    	//设置时间为中国  
	    	calendar = Calendar.getInstance(Locale.CHINA);  
	    	//获取日期  
	    	year = calendar.get(Calendar.YEAR);  
	    	month = calendar.get(Calendar.MONTH);  
	    	day = calendar.get(Calendar.DAY_OF_MONTH);  
	    	hour = calendar.get(Calendar.HOUR_OF_DAY);  
	    	minute = calendar.get(Calendar.MINUTE); 
	    	System.out.println("-----> 获取当前时间 year="+year+",month="+month+",day="+day+",hour="+hour+",minute="+minute);
	    }
	
}


 

main.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/datePickButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="DatePickButton" 
        android:layout_marginTop="100dip"
      />
    
    <Button
        android:id="@+id/timePickButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TimePickButton" 
        android:layout_marginTop="100dip"
      />

</LinearLayout>

相关文章
|
3月前
|
运维 Prometheus 监控
别再盲选了!开源运维工具选型这事儿,咱得说人话
别再盲选了!开源运维工具选型这事儿,咱得说人话
134 7
|
安全 数据安全/隐私保护 芯片
微信读书电脑版,来了!
微信读书电脑版,来了!
|
10月前
|
存储 人工智能 算法
深度揭秘超长序列生成任务训练技术
阿里自研的TorchAcc训练引擎提出了超长序列训练方案FlashSequence,针对超长文本理解、视频生成等场景。通过2D Context Parallel和Hybrid FSDP混合分布式策略,结合显存、计算和通信优化,实现了百万级别超长序列模型的高效训练。FlashSequence在算力、显存需求及分布式训练方面进行了多项创新,性能提升显著,最大可达48%。该方案大幅降低了企业创新成本,提升了业务应用的可能性。
|
12月前
|
机器学习/深度学习 自然语言处理 算法
一个抽取式摘要的应用示例
【10月更文挑战第4天】本文介绍了生成式和抽取式两种摘要算法。生成式摘要通过自然语言生成技术,使用机器学习模型生成新的、精简的句子;抽取式摘要则从文档中提取最能代表内容的句子。文中详细描述了基于TF-IDF的抽取式摘要算法的实现过程,包括计算TF、IDF、句子权重,以及提取摘要的具体步骤。通过示例代码展示了如何实现一个简单的抽取式摘要系统。
341 1
|
前端开发 JavaScript 开发工具
使用jsDelivr和GitHub,上传本地静态资源到免费CDN
本文介绍了一种将本地图片和静态资源(如 js、css、文档等)上传至免费CDN的方法,便于随时调用。具体步骤包括:在GitHub创建仓库`resources`存放资源;通过上传或Git命令同步文件;在仓库中创建新版本并发布。之后即可通过指定格式的URL访问这些CDN资源。此方法简单高效,适合开发者快速部署和共享静态内容。
870 5
使用jsDelivr和GitHub,上传本地静态资源到免费CDN
|
Unix Linux Shell
【探索Linux】P.12(文件描述符 | 重定向 | 基础IO)
【探索Linux】P.12(文件描述符 | 重定向 | 基础IO)
208 0
|
JavaScript Java 测试技术
Java项目基于ssm+vue.js的微博网站附带文章和源代码设计说明文档ppt
Java项目基于ssm+vue.js的微博网站附带文章和源代码设计说明文档ppt
114 0
|
编解码 计算机视觉
YOLOv8改进 | Conv篇 | 2024.1月最新成果可变形卷积DCNv4(适用检测、Seg、分类、Pose、OBB)
YOLOv8改进 | Conv篇 | 2024.1月最新成果可变形卷积DCNv4(适用检测、Seg、分类、Pose、OBB)
1555 0
|
数据可视化 算法 数据挖掘
JCR一区7.2分|非肿瘤内质网应激切入点,发文不难,非常好复现
这篇研究探讨了内质网应激在扩张型心肌病纤维化中的作用,通过基因综合分析揭示了相关免疫反应。在Apoptosis杂志上发表的文章指出,内质网应激可能与疾病恶化相关,涉及先天和适应性免疫失衡。研究整合了两个数据集,鉴定出103个内质网应激相关基因,其中7个基因可能参与免疫机制。研究结果为理解内质网应激的分子机制和开发新疗法提供了新视角。
221 0
|
缓存 移动开发 安全
WebSocket协议:5分钟从入门到精通
WebSocket协议:5分钟从入门到精通
326 0