我目前正在构建一个针对 API 23 的应用程序,最低 API 为 19。
在 API 23 中,android.widget.TimePicker 组件的一些方法已被替换。
例如:
TimePicker.getCurrentHour();
被替换为:
TimePicker.getHour();
现在,在我的应用程序中使用 TimePicker 时,我应该使用以下 if 语句检查设备是否使用 API 22 或更高版本:
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 类的导入)。
这是正确的做法吗?还是有更好的解决方案?
谢谢