2015-08-28 36 views
2

我有這些代碼,並很好地顯示timePicker的時間。代碼使用getCurrentHour和getCurrentMinute。如何用新的getHour()替換舊的getCurrentHour()?

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:致 沒有虛擬方法getHour()我類Landroid /插件/ TimePicker;或它的超類(聲明'android.widget.TimePicker'出現在/system/framework/framework.jar:classes2.dex)

+1

顯示錯誤日誌。 – Rajesh

+0

你必須看看[這個鏈接](http://stackoverflow.com/q/8150155/2715073) – Pankaj

+0

該函數是getHour()不getHours()和getMinute()如果您使用的是android getMinutes()。 widget.TimePicker –

回答

7

可以使用android.os.Build.VERSION.SDK_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(); 
} 
+0

謝謝,是的這將解決我的問題! – Khorshid

0

好吧,它適用於新的時間函數getMinute()和getHour()in模擬器,所以這個問題可能是由於使用API​​導致的。這些牽引功能需要API 23

0

這個答案是你所需要的不遵循其他指南。做檢查,然後只使用timePicker.getCurrentHourtimePicker.getCurrentHour這是用於低於API 23。對於23歲以上的人,請使用timePicker.getHourtimePicker.getMinute分鐘。

相關問題