我目前建立一個應用定位API 23,具有19
最小API在API 23一些的android.widget.TimePicker組件的方法代替。
與棄用方法處理在機器人
例如:
TimePicker.getCurrentHour();
被代替:
TimePicker.getHour();
現在,在我的應用程序使用TimePicker當我應該檢查該設備是否正在使用API 22或以上的下列如果聲明:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
TimePicker.getHour();
else
TimePicker.getCurrentHour();
我所做的是擴展TimePicker類和impl ementing過時方法是這樣的:
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類的在他實施進口)。
這樣做是正確的嗎?或者有更好的解決方案?
謝謝
這是一個很好的方式。在我看來,你釘了它! :)也許你的方法應該按照新的名字約定來命名,當你放棄對M之前的支持時,使得轉換更容易。 – Kenneth
嘿,這個.M是關於什麼的? –
Build.VERSION_CODES.M是指API 23(Android Marshmallow) –