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;

时间: 2024-10-09 03:44:45

android 通过TimePickerDialog修改时间的相关文章

Android 扫描音乐文件、两种方式获取文件最新修改时间

package com.example.demo_mediascanner; import java.io.File; import java.util.Calendar; import java.util.Date; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.app.Acti

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

原文引自:http://www.2cto.com/kf/201312/266908.html 在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范. 一.Unix时间戳 Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方法,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数.Unix时间戳不仅被

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

像datepicker一样,也有timepicker. 同样有timepickerdialog 所用到的方法还是一样,监听时间选择器的变化. 1 package com.example.alimjan.hello_world; 2 3 import java.util.Calendar; 4 5 /** 6 * Created by alimjan on 7/15/2017. 7 */ 8 9 import android.app.TimePickerDialog; 10 import andr

文件按修改时间和创建时间遍历

NSFileCreationDate和NSFileModificationDate两个属性分别代表文件创建时间和修改时间 NSArray *sortedPaths = [array sortedArrayUsingComparator:^(NSString * firstPath, NSString* secondPath) { NSString *firstUrl = [docPath stringByAppendingPathComponent:firstPath];//获取前一个文件完整路

Web 在线文件管理器学习笔记与总结(2)显示文件列表(名称,类型,大小,可读,可写,可执行,创建时间,修改时间,访问时间)

主要函数: filetype() 判断文件类型 filesize() 得到文件大小(字节) is_readable() 判断文件是否可读 is_writeable() 判断文件是否可写 is_executable() 判断文件是否可执行 filectime() 文件创建时间 filemtime() 文件修改时间 fileatime() 文件访问时间 file.func.php 封装文件操作的文件: <?php /* 转换字节大小 */ function transByte($size){ $ar

Android Studio -修改LogCat的颜色

Android Studio -修改LogCat的颜色 author:Kang,Leo weibo:http://weibo.com/kangyi 效果图 设置 Preference->Editor->Colors &n Fonts->Android Logcat 在后面将Use Inberited attributes 去掉勾选 再将 Foreground 前的复选框选上,就可以双击后面的框框去选择颜色了 Apply–>OK  推荐色值 Log级别 色值 VERBOSE

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

摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 @for&ever 2010-07-03 功能: 获取指定目录下面符合一定规则的文件名称和文件修改时间,并保存到指定的文件中 脚本如下: #!/usr/bin/env python# -*- coding: utf-8 -*- '''Created on 2010-7-2 @author: fore

Linux修改时间的方法

Linux修改时间的方法 在命令行输入: date 显示当前时间 Fri Aug  3 14:15:16 CST 2007 date '+%x %X' 显示当前时间 2009年08月03日 14时15分00秒 date -s 按字符串方式修改时间 可以只修改日期,不修改时间,输入: date -s 2007-08-03 只修改时间,输入:date -s 14:15:00 同时修改日期时间,注意要加双引号,日期与时间之间有一空格,输入:date -s "2007-08-03 14:15:00&qu

Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间 (转载)

在windows下,一个文件有:创建时间.修改时间.访问时间. 而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后, 状态就没有改动过,那么状态改动时间=建立时间;如果文件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过.读过.其状态是否 变过,所以判断文件的建立时间基本上能为不可能. 如何查一个文