В настоящее время я создаю приложение для таргетинга API 23 с минимальным API 19.
В API 23 были заменены некоторые из методов компонента android.widget.TimePicker.
Например:
TimePicker.getCurrentHour();
был заменен на:
TimePicker.getHour();
Теперь, когда я использую TimePicker в своем приложении, я должен проверить, использует ли устройство API 22 или выше со следующим оператором if:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
TimePicker.getHour();
else
TimePicker.getCurrentHour();
То, что я сделал, - это расширение класса TimePicker и реализация устаревших методов следующим образом:
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();
}
}
поэтому пользователь, который использует этот класс, не повлияет на изменение методов (он должен заменить импорт класса TimePicker в его реализацию).
Правильно ли это? или есть лучшее решение?
Спасибо