我正在創建一個簡單的應用程序,其中使用TimePicker
來捕獲小時和分鐘。我使用代碼來做到這一點像下面這樣:Xamarin.Android:如何處理TimePicker窗口部件的deprecacy問題?
end.AddHours(view.FindViewById<TimePicker>(Resource.Id.endPicker).Hour);
end.AddMinutes(view.FindViewById<TimePicker>(Resource.Id.endPicker).Minute);
的問題是與Hour
和Minute
屬性,同時年底是一個DateTime
。
在奇巧API拉特19時,Visual Studio給了我以下錯誤:
在棉花糖API拉特23,但是,應用程序運行得很好。所以這個問題必須是在getMinute/Hour
方法的後面的API中交換了Java getCurrentMinute/Hour
方法,因爲它被寫入here。有沒有辦法在早期的API中使用早期的方法,並在最新的方法中使用最新的方法?我可以編碼到我的Xamarin.Android應用程序?在Native Android中,我當然會檢查SDK版本並相應地使用Java方法,但我不知道是否可以強制底層Java代碼以這種方式行事。
UPDATE
繼Janmejoy的建議,我創建了一個if
語句來檢查有問題的情況下,像這樣一個Android版本,並使用過時代碼:
if(((int)Android.OS.Build.VERSION.SdkInt) < 23)
{
start = new DateTime(1, 1, 1, (int)view.FindViewById<TimePicker>(Resource.Id.startPicker).CurrentHour,
(int)view.FindViewById<TimePicker>(Resource.Id.startPicker).CurrentMinute, 0);
end = new DateTime(1, 1, 1, (int)view.FindViewById<TimePicker>(Resource.Id.endPicker).CurrentHour,
(int)view.FindViewById<TimePicker>(Resource.Id.endPicker).CurrentMinute, 0);
}
這似乎但是,我的應用程序在模擬的KitKat設備上非常緩慢(它在1GB Marsh上運行得非常完美,但它似乎是早期的762 MB RAM設備的bug)。更糟糕的是,這款應用程序現在在Marsh和KitKat上看起來都一樣,展現出相同的錯誤行爲。我從兩個設備上刪除了應用程序,將棄用的代碼註釋掉並完成了RebuildAll,但這種奇怪的行爲仍然存在。有沒有人見過類似的東西?可能是什麼問題?
謝謝你的回答,但是,這並沒有回答我關於我怎麼能以某種方式_force_ C#編譯到現在已經過時底層Java問題代碼,如果這是可能的話。換句話說,我的問題是我不知道如何修改C#代碼編譯的Java代碼。 – rTECH