TimePicker 在获取分钟和小时时使应用程序崩溃

Posted

技术标签:

【中文标题】TimePicker 在获取分钟和小时时使应用程序崩溃【英文标题】:TimePicker crashes app when getting the minute and hour 【发布时间】:2016-04-22 10:05:10 【问题描述】:

我正在尝试从timePicker 中获取hourminuteselected values,然后从用户的设备中获取当前的system time。之后我需要subtract time selected - time.now 然后向用户显示,直到闹钟响起的剩余时间。

但是应用程序崩溃了,我找不到理解。

@TargetApi(Build.VERSION_CODES.M)
public void onClickAlarmOn(View v) 

    final Calendar c = Calendar.getInstance();
    TimePicker alarm_time_picker = (TimePicker) findViewById(R.id.timePicker);
    int hour = alarm_time_picker.getHour(); //get selected hour
    int minute = alarm_time_picker.getMinute(); //get selected minute

    int hour_now = c.get(Calendar.HOUR); //get system's hour
    int minute_now = c.get(Calendar.MINUTE); //get system's minute

    int hour_result = hour - hour_now; //subtract the time selected by time.now of system
    int minute_result = minute - minute_now;

    String hour_result_string = String.valueOf(hour_result); //convert to string to display
    String minute_result_string = String.valueOf(minute_result);

    setToast_result("Alarm set to " + hour_result_string + " hours " + minute_result_string + " minutes");

谢谢!

【问题讨论】:

你使用的设备以及设备中的哪个api版本。 @Harshad 我已经在 API 版本 21 的三星 Galaxy S5 以及 API 版本 19 的 Bluestacks 上进行了测试。谢谢! 将设备更改为marshmallow API 23。它的工作。 【参考方案1】:

首先我在Lollipop Device 中运行您的代码,但与您的输出App is crash. 相同

然后我阅读了文档http://developer.android.com/reference/android/widget/TimePicker.html

在 API 23 中

仅供参考。

getCurrentHour()

此方法在 API 级别 23 中已弃用。使用 getHour()

getCurrentMinute()

此方法在 API 级别 23 中已弃用。使用 getMinute()

现在我更改设备并在MarshMallow 中运行它工作正常。

这样使用代码:

final Calendar c = Calendar.getInstance();
    TimePicker alarm_time_picker = (TimePicker) findViewById(R.id.timePicker);



alarm_time_picker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() 
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) 
    
    int hour = alarm_time_picker.getHour(); //get selected hour
    int minute = alarm_time_picker.getMinute();


int hour_now = c.get(Calendar.HOUR); //get system's hour
int minute_now = c.get(Calendar.MINUTE); //get system's minute

int hour_result = hour - hour_now; //subtract the time selected by time.now of system
int minute_result = minute - minute_now;

String hour_result_string = String.valueOf(hour_result); //convert to string to display
String minute_result_string = String.valueOf(minute_result);

setToast_result("Alarm set to " + hour_result_string + " hours " + minute_result_string + " minutes");


【讨论】:

非常感谢您的回答!对于那些将来可能会遇到同样问题的人:我已经从 Android SDK Manager 安装了几个 API 版本,因此它与我的设备版本相匹配。然后我右键单击应用程序文件夹结构,打开模块设置并在“风味”选项卡上,在最小 sdk 中选择旧版本。

以上是关于TimePicker 在获取分钟和小时时使应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

daterangepicker插件单个时间选择器怎么加小时、分钟、秒,如图的效果

在 DatePicker-swift 中限制小时和分钟?

Xamarin.Forms Timepicker IsVisible 属性与自定义渲染器

12小时格式Xcode的-在一个“TimePicker”24 NSDate的设置

Js Jquery 时间控件显示小时 分钟 秒

如何从 NSDate 获取小时和分钟?