java - TimePicker 在获取分钟和小时时导致应用程序崩溃

标签 java c# android calendar alarm

我试图从 timePicker 获取小时分钟选定值,然后从用户设备获取当前系统时间。之后,我需要减去选择的时间 - 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");
}

谢谢!

最佳答案

首先,我在 Lollipop Device 中运行您的代码,但与您的输出相同应用程序崩溃。

然后我阅读了文档 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");

}

关于java - TimePicker 在获取分钟和小时时导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36790817/

相关文章:

Java 线程 - start() 和 run() - 在控制台中丢失行

java - JSR 310::System.currentTimeMillis() 与 Instant.toEpochMilli()::TimeZone

c# - 从 DataSet 中获取值到变量中

java - Android:我怎么知道CSS注入(inject)完成了?

android - 如何使用 Android 设置中指定的时间和日期格式?

android - Android 应用启动时获取电源状态

java - 使用 Javabeans 创建登录页面(未设置属性)

java - PowerMock:来自父类的 stub 方法

javascript - 如何在 ASP.net 中从 Javascript 调用 C# 服务器端函数

c# - asp.net 中的内容而不是 java 中的 httpsessionlistener