ich zur Zeit den Aufbau einer app API 23, mit einem Minimum von 19 API
In API 23 einige der Methoden der android.widget.TimePicker Komponente Targeting ersetzt wurde.
Umgang mit veralteten Methoden in android
Zum Beispiel:
TimePicker.getCurrentHour();
ersetzt wurde:
TimePicker.getHour();
Nun, wenn Timepicker in meiner app soll ich überprüfen, ob das Gerät API 22 oder oben mit dem folgenden, wenn Anweisung:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
TimePicker.getHour();
else
TimePicker.getCurrentHour();
Was ich tat, war die TimePicker-Klasse zu erweitern und zu impl ementing die veralteten Methoden wie folgt aus:
public class TimePicker extends android.widget.TimePicker {
public TimePicker(Context context) {
super(context);
}
public void setCurrentHour(int hour) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
super.setHour(hour);
else
super.setCurrentHour(hour);
}
public void setCurrentMinute(int minute) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
super.setMinute(minute);
else
super.setCurrentMinute(minute);
}
public int getCurrentHour() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
return super.getHour();
else
return super.getCurrentHour();
}
public int getCurrentMinute() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
return super.getMinute();
else
return super.getCurrentMinute();
}
}
so dass der Benutzer, die diese Klasse verwendet, die Änderung der Methoden nicht beeinflussen (er nur den Import der Timepicker-Klasse in seiner Implementierung ersetzen sollte).
Ist es der richtige Weg? oder gibt es eine bessere Lösung?
Dank
Es ist eine gute Art und Weise. Meiner Meinung nach hast du es geschafft! :) Vielleicht sollten Ihre Methoden nach der neuen Namenskonvention benannt werden, um den Übergang zu erleichtern, wenn Sie die Unterstützung für pre M fallen lassen. – Kenneth
hey, Worum geht es bei .M? –
Build.VERSION_CODES.M bezieht sich auf API 23 (Android Marshmallow) –