Tengo una clase UserHandler Singleton y declaré una variable como esta

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

Luego, en mi archivo 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);
    ...
}

Cuando lo ejecuto en mi dispositivo (Oppo, Android 8.1.0), funciona normalmente, pero cuando lo probé en otro dispositivo (Samsung, Android 6.0.1), se bloquea y al depurarlo, muestra esto

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

¿Cómo solucionar esto? ¿Debo usar bibliotecas de terceros?

0
Death Ascend 14 mar. 2021 a las 14:46

1 respuesta

La mejor respuesta

Debido a que el constructor DatePickerDialog(Context context) se agregó en API level 24, cuando lo ejecuta en Samsung, Android 6.0.1, lanzará la excepción Java.Lang.NoSuchMethodError.

Puede tomar una decisión y usar la API anterior cuando la versión del SDK es menor que 24, y usar la nueva API cuando es mayor que 24.

La api se puede consultar en DatePickerDialog < / a>

0
Leo Zhu - MSFT 15 mar. 2021 a las 02:18