android 通过TimePickerDialog修改时间
初学android,写了个修改时间的小程序,实现如下;

点击change按钮,弹出时间对话框;

然后点击Done,设置显示时间;

实现方式有两种,
一种是使用showDialog方法,不过此种方法已过期,但还可以用;
另一种是使用DialogFragment类来实现;
先看第二种方式:
其中layout的activity_main.xml配置为:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/timepicker_display"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="20sp"
/>
<Button
android:id="@+id/button_timepicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="change "
/>
</LinearLayout>
MainActivity.java:
package com.process.processbar;
import java.util.Calendar;
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
public class MainActivity extends Activity {
private TextView timePickerDisplay;
private Button buttonTimePicker;
private int mHour; // 设置小时
private int mMinute; // 设置分钟
static final int TIME_DIALOG_ID = 0; // 对话框的ID
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timePickerDisplay = (TextView) findViewById(R.id.timepicker_display);
buttonTimePicker = (Button) findViewById(R.id.button_timepicker);
buttonTimePicker.setOnClickListener(listener);
// 通过Calendar获取模拟器的当前时间
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// 显示当前模拟器的时间
timePickerDisplay.setText(new StringBuilder().append(pad(mHour))
.append(":").append(pad(mMinute)));
}
private OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
DialogFragment fragment = new MyDialogFragment();
fragment.show(getFragmentManager(), "datePicker");
}
};
// 设置显示格式
private static String pad(int c) {
return (c >= 10) ? String.valueOf(c) : "0" + String.valueOf(c);
}
// 使用内部类来实现
class MyDialogFragment extends DialogFragment {
public Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
return new TimePickerDialog(getActivity(), mTimeSetListener,
mHour, mMinute, true);
}
return null;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new TimePickerDialog(getActivity(), mTimeSetListener, mHour,
mMinute, true);
}
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
timePickerDisplay
.setText(new StringBuilder().append(pad(hourOfDay))
.append(":").append(pad(minute)));
}
};
}
}
第一种方式为:
MainActivity.java:
package com.process.processbar;
import java.util.Calendar;
import android.app.Activity;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
public class MainActivity extends Activity {
private TextView timePickerDisplay;
private Button buttonTimePicker;
private int mHour; // 设置小时
private int mMinute; // 设置分钟
static final int TIME_DIALOG_ID = 0; // 对话框的ID
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timePickerDisplay = (TextView) findViewById(R.id.timepicker_display);
buttonTimePicker = (Button) findViewById(R.id.button_timepicker);
buttonTimePicker.setOnClickListener(listener);
// 通过Calendar获取模拟器的当前时间
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// 显示当前模拟器的时间
timePickerDisplay.setText(new StringBuilder().append(pad(mHour))
.append(":").append(pad(mMinute)));
}
private OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
showDialog(TIME_DIALOG_ID); // 方法已过期
}
};
// 设置显示时间
private static String pad(int c) {
return (c >= 10) ? String.valueOf(c) : "0" + String.valueOf(c);
}
// 监听器
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
timePickerDisplay.setText(new StringBuilder()
.append(pad(hourOfDay)).append(":").append(pad(minute)));
}
};
// 调用showDialog时,会调用onCreateDialog方法,我们需要重写这个方法,在该方法中创建一个Dialog;
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute,
true);
}
return null;
}
}
需注意:showDialog方法已过期,虽然还可以用,但官方建议使用第二种方式来替代showDialog;
android 通过TimePickerDialog修改时间的更多相关文章
- Android中关于日期时间与时区的使用总结
在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范. 一.Unix时间戳 Unix时间戳(Unix tim ...
- Android 开发笔记___时间选择器---timePicker
像datepicker一样,也有timepicker. 同样有timepickerdialog 所用到的方法还是一样,监听时间选择器的变化. package com.example.alimjan.h ...
- $Android中日期和时间选择器的实现
创建日期或时间选择窗口需要弹出Dialog的时候,Activity类的showDialog方法已经弃用了,而推荐使用的是DialogFragment,本文总结一下其具体用法. (一)日期选择器 1.创 ...
- 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...
- touch — 设定文件的访问和修改时间
PHP touch 设定文件的访问和修改时间 touch (PHP 4, PHP 5) touch — 设定文件的访问和修改时间 说明 bool touch ( string $filename [, ...
- Android Studio -修改LogCat的颜色
Android Studio -修改LogCat的颜色 author:Kang,Leo weibo:http://weibo.com/kangyi 效果图 设置 Preference->Edit ...
- SOME:收缩数据库日志文件,查看表数据量和空间占用,查看表结构索引修改时间
---收缩数据库日志文件 USE [master]ALTER DATABASE yourdatabasename SET RECOVERY SIMPLE WITH NO_WAITALTER DATAB ...
- stat file 查看文件的 最新的被访问时间 最近的修改时间 最近的状态改变时间
[root@NB ~]# stat /media/6FE5-D831/git-data/IT-DOC/web收藏.txt File: `/media/6FE5-D831/git-data/IT-DOC ...
- linux 中如何修改时间 date
修改linux的时间可以使用date指令 修改日期: 时间设定成2009年5月10日的命令如下: #date -s 05/10/2009 修改时间: 将系统时间设定成上午10点18分0秒的命令如下 ...
随机推荐
- cocos2d-x游戏开发(十七)NDK+ant编译暗黑世界
个人原创,欢迎转载http://blog.csdn.net/dawn_moon/article/details/12308967 9秒论坛的客户端暗黑世界,ios已经跑过了,今天搞了一下安卓的,记录一 ...
- c# 可变性解析(协变和逆变)
之所以会想写关于协变和逆变的知识点,主要是因为在泛型委托中提到了这个知识点. 1.什么是可变性 可变性是.NET4.0中的一个特性,可变形分为:协变性,逆变性,不可变性. 2.在.NET4.0出来之前 ...
- sql列转行
1.需要实现一个单行的统计报表 思路先用一个union查出单列,然后再把单列转成单行 2.实现 SELECT MAX(CASE WHEN type = 1 THEN num ELSE 0 END) A ...
- nginx 配置访问正则匹配
server{ listen 80; server_name api.zyy.com; root /var/www/api_zyy; index index.php; location ~ /asse ...
- 网站项目后台的目录命名为admin后,网页莫名其妙的变样了
这是我的第一篇博客文章,与其说是分享经验,倒不如说是求助 最近因为要完成一个课程设计,在拿一个现成的项目过来改,要用到select下拉菜单,可是发觉怎么我的这个下拉菜单怎么变样了 刚开始它是这样的 感 ...
- js 全国城市3级联动
js /* * 全国三级城市联动 js版 */ function Dsy(){ this.Items = {}; } Dsy.prototype.add = function(id,iArray){ ...
- asp.net web编程开发将model键值对化
关键字:model属性,反射 正文 model是数据库的映射,在.net web开发中,作为程序的最底层.web开发的一切都是基于数据库的,分了层之后,就基于model了. 为什么要将 ...
- android开发架构理解
1. android 开发和普通的PC程序开发的,我觉得还是不要过度设计,因为手机开发,项目相对传统软件开发就小很多,而且手机的性能有限,过度设计代码mapping需要消耗的能相对就高,而且手机开发的 ...
- ORACLE查询数据库的锁表情况
查询数据库的锁表情况语句如下: SELECT p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_na ...
- SignalR2.0开发实例之——私聊
一.前言 继续上一章的补充,这章介绍使用私聊的功能.主要通过一个方法 Clients.Client(Context.ConnectionId).showMessage(msg); SignalR框 ...