初学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修改时间的更多相关文章

  1. Android中关于日期时间与时区的使用总结

    在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范.   一.Unix时间戳   Unix时间戳(Unix tim ...

  2. Android 开发笔记___时间选择器---timePicker

    像datepicker一样,也有timepicker. 同样有timepickerdialog 所用到的方法还是一样,监听时间选择器的变化. package com.example.alimjan.h ...

  3. $Android中日期和时间选择器的实现

    创建日期或时间选择窗口需要弹出Dialog的时候,Activity类的showDialog方法已经弃用了,而推荐使用的是DialogFragment,本文总结一下其具体用法. (一)日期选择器 1.创 ...

  4. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

    摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...

  5. touch — 设定文件的访问和修改时间

    PHP touch 设定文件的访问和修改时间 touch (PHP 4, PHP 5) touch — 设定文件的访问和修改时间 说明 bool touch ( string $filename [, ...

  6. Android Studio -修改LogCat的颜色

    Android Studio -修改LogCat的颜色 author:Kang,Leo weibo:http://weibo.com/kangyi 效果图 设置 Preference->Edit ...

  7. SOME:收缩数据库日志文件,查看表数据量和空间占用,查看表结构索引修改时间

    ---收缩数据库日志文件 USE [master]ALTER DATABASE yourdatabasename SET RECOVERY SIMPLE WITH NO_WAITALTER DATAB ...

  8. stat file 查看文件的 最新的被访问时间 最近的修改时间 最近的状态改变时间

    [root@NB ~]# stat /media/6FE5-D831/git-data/IT-DOC/web收藏.txt File: `/media/6FE5-D831/git-data/IT-DOC ...

  9. linux 中如何修改时间 date

    修改linux的时间可以使用date指令  修改日期: 时间设定成2009年5月10日的命令如下: #date -s 05/10/2009  修改时间: 将系统时间设定成上午10点18分0秒的命令如下 ...

随机推荐

  1. vs2010 sp1 创建silverlight 时,提示我 “在创建silverlight项目之前,您需要安装最新的silverlight Developer运行时

    ---恢复内容开始--- Silverlight 5 Developer Rumtime (32bit): http://go.microsoft.com/fwlink/?LinkId=229323 ...

  2. JavaScript 原型与原型链

    __proto__ 用来获取和设置对象原型,但它是非标准的.__proto__前后的双下划线,说明它本质上是一个内部属性,而不是一个正式的对外的API,只是由于浏览器广泛支持,才被加入了ES6.标准明 ...

  3. (转)keytools命令

    结合网络资源,对keytool使用总结,以备后用: Keytool是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件 ...

  4. Jmeter接口测试案例实践(一)

    1.1. 接口介绍 本次测试的接口采用内网中的通讯录查询接口进行测试,接口参数如下: 1.2. 使用Jmeter进行接口测试 1.2.1. 打开Jmeter 下载好Jmeter后,双击bin目录下的j ...

  5. 你需要知道的九大排序算法【Python实现】之归并排序

    四.归并排序 基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列.归并过程:比 ...

  6. 七、Solr服务部署和安全

    概念: 我们知道,Solr是以webapp的形式运行的,那么我们只需要把Solr.war文件部署到web容器中,便可以运行了,但是因为需要连接数据库做索引并且提供线上的服务调用query接口,那么So ...

  7. 正则表达式JSP实例

    <%@ page language="java" import="java.util.*,cn.com.Person,cn.com.Adddress" p ...

  8. Mysql数据库里面的String类型依照数字来排序以及按时间排序的sql语句

    今天做项目的时候,遇到个小小的问题,在数据库中查询的时候,要用String类型的ID进行一下排序!(注:ID字段为 varchar 类型) 解决的方法: 如: SELECT * FROM  Stude ...

  9. [A Top-Down Approach][第一章 计算机网络和因特网]

    [A Top-Down Approach][第一章 计算机网络和因特网] 标签(空格分隔): 计算机网络 介绍基本术语和概念 查看构成网络的基本硬件和软件组件. 从网络的边缘开始,考察在网络中运行的端 ...

  10. vs开发常用快捷键

    Ctrl+K+D:快速对齐代码///按D的时候K快速弹起 如果出现语法错误则无法对齐Ctrl+Z:撤销Ctrl+S:保存Ctrl+J:快速弹出智能提示Shift+End.Shift+Home//快速选 ...