我目前正在构建一个面向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类的导入).
这样做是正确的吗?还是有更好的解决方案?
谢谢