android - 如何使android时间选择器不允许选择过去的时间

标签 android

嗨,我是 android 的新手,我不想让过去的时间被使用时间选择器选择.. 我尝试使用以下代码

private TimePicker.OnTimeChangedListener StartTimeChangedListener=new TimePicker.OnTimeChangedListener()
    {
        public void onTimeChanged(TimePicker view,int selectedHour,int selectedMinute)
        {
            update(view,selectedHour,selectedMinute);
        }
    };

而且我不知道如何编写 update(view,selectedHour,selectedMinute) 的代码;谁能帮帮我...

最佳答案

您是否尝试过关注 tutorial on the developers page对于时间选择器?

编辑:

好的,按照教程,我们有了用于显示时间的 TextView 的更新方法:

private void updateDisplay() {
    mTimeDisplay.setText(
        new StringBuilder()
                .append(pad(mHour)).append(":")
                .append(pad(mMinute)));
}

private static String pad(int c) {
    if (c >= 10)
        return String.valueOf(c);
    else
        return "0" + String.valueOf(c);
}

将为用户选择时间创建的对话框:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case TIME_DIALOG_ID:
        return new TimePickerDialog(this,
                mTimeSetListener, mHour, mMinute, false);
    }
    return null;
}

这里是我要添加您想要的限制的地方,即用户设置时间时的回调方法。你需要获取当前的小时和分钟,如果用户选择过去的时间,你不显示他的更改并向他发送 Toast 或其他东西。

使用日历你可以很容易地得到它:

Calendar c = Calendar.getInstance();           

// the callback received when the user "sets" the time in the dialog
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
    new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
           if (mHour >= Integer.getInteger(c.get(Calendar.HOUR_OF_DAY)) && mMinute >= Integer.getInteger(c.get(Calendar.MINUTE))) { 
            mHour = hourOfDay;
            mMinute = minute;                
            updateDisplay();
            } else 
            //Display a toast or something to inform the user that he can't pick a past time.   
        }

现在,如果您希望用户无法在您创建的对话框中选择以前的时间,您必须创建自己的小时选择屏幕,因为 TimePickerDialog 对您可以选择的值没有限制。

希望对您有所帮助!

关于android - 如何使android时间选择器不允许选择过去的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9188427/

相关文章:

android - Android 模拟器中的外部 SDCard

java - 如何在没有真正完成的情况下关闭 Activity ?

android - 具有自定义 View 的 MVVM 架构

android - 如何在按下主页按钮后恢复以前的 Activity 并返回到应用程序

android - 制作 Vcard 时在 Android ICS 中出现错误

java - 如何仅从图库中获取图像

android - Gradle位置不正确如何解决Android Gradle错误

android - 背景中的居中元素与前景中的居中元素不匹配

Android Retrofit - 回调与不回调

android - Android Studio:Gradle项目同步失败