2016-04-22 3 views
1

Ich versuche, die selected values der hour und minute vom timePicker, zu erhalten und dann die aktuellen system time aus dem Gerät des Benutzers zu erhalten. Danach muss ich subtract die time selected - time.now und dann dem Benutzer anzeigen, die verbleibende Zeit bis der Alarm klingelt.Timepicker stürzt App, wenn die Minute und Stunde bekommt

Allerdings stürzt die App, und ich konnte kein Verständnis finden.

@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"); 
} 

Vielen Dank!

+0

Verwendetes Gerät verwendet wird und die api-Version im Gerät. –

+0

@Harshad Ich habe auf Samsung Galaxy S5 mit API Version 21 und auch auf Bluestacks mit API Version 19 getestet. Danke! – hurkaperpa

+0

Ändern Sie das Gerät in 'Marshmallow' API 23. Es ist Arbeit. –

Antwort

0

erste betreibe ich den Code in Lollipop Device aber gleich wie die Ausgabe App is crash.

dann habe ich die Dokumentation zu lesen http://developer.android.com/reference/android/widget/TimePicker.html

in Api 23

Nur zur Information.

getCurrentHour()

Diese Methode wurde in API-Ebene 23. Verwendung veraltet getHour()

getCurrentMinute()

Diese Methode wurde in API-Ebene 23. Verwendung veraltet getMinute()

Jetzt ändere ich das Gerät und laufen in MarshMallow es funktioniert gut.

Benutzen Sie den Code auf diese Weise:

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"); 

} 
+0

Vielen Dank für Ihre Antwort! Für diejenigen, die das gleiche Problem in der Zukunft haben könnten: Ich habe mehrere API-Versionen von Android SDK Manager installiert, so dass sie mit meiner Geräteversion übereinstimmen. Dann habe ich mit der rechten Maustaste auf die App-Ordner-Struktur, Open Module Settings und auf der Registerkarte "Aromen", wählen Sie eine ältere Version in der Mindest-SDK. – hurkaperpa

Verwandte Themen