处理安卓系统中已弃用的方法
2022-09-04 22:32:29
我目前正在构建一个面向 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 类的导入)。
这样做是正确的方式吗?还是有更好的解决方案?
谢谢