Xamarin.Android 三星在 DatePickerDialog 上崩溃

Xamarin.Android Samsung Crashes on DatePickerDialog

我有一个 UserHandler 单例 Class 并且我声明了一个这样的变量

class UserHandler
{
  ...
  public DatePickerDialog dialog = null;
  ...
}

然后在我的 MainActivity.cs 文件中

using Android.App;
using Android.Content.PM;
using Android.OS;
using Android.Runtime;
using Android.Support.Design.Widget;
using Android.Support.V7.App;
using Android.Text;
using Android.Views;
using Android.Widget;
using Java.Interop;
using Java.Lang;
using System;
using System.Collections.Generic;
using System.Globalization;
using AlertDialog = Android.Support.V7.App.AlertDialog;
using Exception = System.Exception;
class MainActivity
{
  private readonly UserHandler U_Handler = UserHandler.GetInstance;
  ...
  protected override void OnCreate(Bundle savedInstanceState)
  {
    base.OnCreate(savedInstanceState);
    Xamarin.Essentials.Platform.Init(this, savedInstanceState);
    SetContentView(Resource.Layout.activity_main);
    ...
    U_Handler.dialog = new DatePickerDialog(this);
    ...
}

当我在我的设备(Oppo,Android 8.1.0)上 运行 它时,它工作正常,但是当我在其他设备(三星,Android 6.0. 1), 它崩溃了,在调试时,它显示了这个

**Java.Lang.NoSuchMethodError:** 'no non-static method "Landroid/app/DatePickerDialog;.<init>(Landroid/content/Context;)V"'

如何解决这个问题? 我应该使用第三方库吗?

因为构造函数DatePickerDialog(Context context)是在API level 24中添加的,当你在Samsung, Android 6.0.1中运行它时,它会抛出Java.Lang.NoSuchMethodError异常。

可以判断调用SDK版本小于24时使用旧API,大于24时使用新API

api你可以看看DatePickerDialog