sto attualmente costruendo un'applicazione di targeting API 23, con un minimo API di 19.
In API 23 alcuni dei metodi del componente android.widget.TimePicker stato sostituito.
trattati i metodi deprecati in androide
Ad esempio:
TimePicker.getCurrentHour();
è stato sostituito da:
TimePicker.getHour();
Ora, quando si utilizza TimePicker nella mia app dovrei verificare se il dispositivo utilizza API 22 o superiore con la seguente, se dichiarazione:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
TimePicker.getHour();
else
TimePicker.getCurrentHour();
Quello che ho fatto è stato estendere la classe TimePicker e impl ementing i metodi deprecati in questo modo:
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();
}
}
quindi l'utente che utilizza questa classe non influenzerà il cambiamento dei metodi (che dovrebbe sostituire solo l'importazione della classe TimePicker nella sua attuazione).
È il modo giusto di farlo? o c'è una soluzione migliore?
Grazie
E 'un buon modo. Secondo me, l'hai inchiodato! :) Forse i tuoi metodi dovrebbero essere nominati dopo la nuova convenzione sui nomi, rendendo più facile la transizione quando si rilascia il supporto per la pre M. – Kenneth
hey, Di cosa si tratta .M? –
Build.VERSION_CODES.M si riferisce all'API 23 (Android Marshmallow) –