Android 如何用新的getHour()替换旧的getCurrentHour()?

Android 如何用新的getHour()替换旧的getCurrentHour()?,android,Android,我有这些代码,可以很好地从timePicker显示时间。该代码使用getCurrentHour和getCurrentMinute public void setTime(View view) { int hour = timePicker1.getCurrentHour(); int min = timePicker1.getCurrentMinute(); showTime(hour, min); } public void showTime(int hour, in

我有这些代码,可以很好地从timePicker显示时间。该代码使用getCurrentHour和getCurrentMinute

public void setTime(View view) {
    int hour = timePicker1.getCurrentHour();
    int min = timePicker1.getCurrentMinute();
    showTime(hour, min);
}

public void showTime(int hour, int min) {
    if (hour == 0) {
        hour += 12;
        format = "AM";
    }
    else if (hour == 12) {
        format = "PM";
    } else if (hour > 12) {
        hour -= 12;
        format = "PM";
    } else {
        format = "AM";
    }
    time.setText(new StringBuilder().append(hour).append(" : ").append(min)
            .append(" ").append(format));
}
android Studio告诉我使用新的getHour()和getMinute()

当我在上面的代码中使用它们时,应用程序停止并崩溃。为什么以及如何正确使用它们

这是logcat中的错误:
原因:java.lang.NoSuchMethodError:Landroid/widget/TimePicker类中没有虚拟方法getHour()I;或者它的超类(声明'android.widget.TimePicker'出现在/system/framework/framework.jar:classes2.dex中)

好的,它可以与emulator中的新时间函数getMinute()和getHour()配合使用,因此问题可能是由于使用了API造成的。这两个函数需要API 23。

您可以使用android.os.Build.version.SDK\u INT检查SDK版本:

int hour = 0;
int min = 0;

int currentApiVersion = android.os.Build.VERSION.SDK_INT;
if (currentApiVersion > android.os.Build.VERSION_CODES.LOLLIPOP_MR1){
    hour = timePicker1.getHour();
    min = timePicker1.getMinute();
} else {
    hour = timePicker1.getCurrentHour();
    min = timePicker1.getCurrentMinute();
}

这个答案就是你所需要的,不要遵循其他指南。执行检查,然后只使用
timePicker.getCurrentHour
timePicker.getCurrentHour
这是用于下面的
API23
。对于23及以上版本,使用
timePicker.getHour
timePicker.getMinute
分钟

如果您使用的是android.widget.TimePickerYes,则必须查看函数是getHour()而不是getHours()和getMinute()而不是getMinutes():新函数是getHour()和getMinute()