Xamarin.Android: 如何处理 TimePicker 小部件的弃用问题?

Xamarin.Android: How to handle deprecacy issue with TimePicker widget?

我正在创建一个简单的应用程序,其中 TimePickers 用于捕获小时和分钟。我使用如下代码来执行此操作:

end.AddHours(view.FindViewById<TimePicker>(Resource.Id.endPicker).Hour);
end.AddMinutes(view.FindViewById<TimePicker>(Resource.Id.endPicker).Minute);

问题出在 HourMinute 属性上,而 endDateTime.

在 KitKat API lvl 19 上,Visual Studio 给我以下错误:

然而,在 MarshMallow API 等级 23 上,该应用程序运行良好。所以问题一定是 Java getCurrentMinute/Hour 方法在后来的 API 中被交换为 getMinute/Hour 方法,因为它被写成 。有没有办法在较早的 API 中使用较早的方法,而在较晚的方法中使用最新的方法?我可以将其编码到我的 Xamarin.Android 应用程序中吗?在本机 Android 中,我当然会检查 SDK 版本并相应地使用 Java 方法,但我不知道我是否可以强制底层 Java 代码以这种方式运行。

更新

按照 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 设备上运行速度非常慢(它在 1 GB 的 Marsh 上运行完美,但在具有 762 MB RAM 的早期设备上似乎有问题)。更糟糕的是,该应用程序现在在 Marsh 和 KitKat 上看起来一样,表现出相同的错误行为。我从两台设备上删除了应用程序,注释掉不推荐使用的代码并完成了 RebuildAll,但这种奇怪的行为仍然存在。有人见过类似的吗?可能是什么问题?

In Native Android I would of course check the SDK version and use Java methods accordingly,

是的,你是对的!您也可以在 Xamarin 中这样尝试

if (((int)Android.OS.Build.VERSION.SdkInt) >= 23){               
//
}
else{//}

@见https://developer.xamarin.com/api/property/Android.OS.Build+VERSION.SdkInt/