Aujourd'hui, j'ai mis à jour Xamarin.Forms 2.5. et j'ai vu que j'obtenais les avertissements suivants:
Avertissement CS0618 'Forms.Context' est obsolète: 'Le contexte est obsolète à partir de la version 2.5. Veuillez utiliser un contexte local à la place. '
Comment puis-je obtenir le contexte local au lieu de Forms.Context
? Le contexte Android signifie-t-il?
Avertissement CS0618 'ButtonRenderer.ButtonRenderer ()' est obsolète: 'Ce constructeur est obsolète à partir de la version 2.5. Veuillez utiliser ButtonRenderer (Context) à la place. '
Dans mon ButtonRenderer
je n'ai que la méthode OnElementChanged()
, alors que dois-je changer ici? Ajoutez simplement un constructeur ButtonRenderer(Context)
? Je reçois toujours l'avertissement, si je le fais dans ma classe de rendu de plate-forme. Quelqu'un at-il un exemple? Le documentation officielle ne le mentionne pas et Google n'apporte pas non plus de résultats utiles, à l'exception du code open source de ButtonRenderer
. Cette modification concerne également de nombreuses autres classes de rendu.
Quelqu'un a-t-il connu d'autres changements, qui freinent les plugins, etc.?
PS: Je n'ai pas non plus su quand Device.Windows
Était devenu obsolète. Maintenant, je l'ai remplacé par Device.UWP
.
J'ai eu ce même problème pour un SearchBarRenderer
et tout ce que je devais faire pour le corriger était d'ajouter un constructeur comme ceci:
public ShowSearchBarRenderer(Context context) : base(context)
{
}
J'espère que cela répond à la deuxième partie de votre question.
Il y a deux questions ici:
Xamarin.Forms.Forms.Context
est obsolète?Ajoutez le constructeur surchargé à chaque moteur de rendu personnalisé
Voici un exemple utilisant un ButtonRenderer
[Assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))]
namespace MyApp.Droid
{
public class CustomButtonRenderer : ButtonRenderer
{
public CustomButtonRenderer(Context context) : base(context)
{
}
protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
//ToDo: Customize Button
}
}
}
Installez @ Motz 's CurrentActivityPlugin .
Maintenant, vous pouvez appeler CrossCurrentActivity.Current.Activity
lorsque vous devez accéder à l'activité en cours.
Voici un exemple de la façon d'ouvrir les paramètres de l'application dans Xamarin.Forms.
[Assembly: Dependency(typeof(DeepLinks_Android))]
namespace MyApp.Droid
{
public class DeepLinks_Android : IDeepLinks
{
Context CurrentContext => CrossCurrentActivity.Current.Activity;
public Task OpenSettings()
{
var myAppSettingsIntent = new Intent(Settings.ActionApplicationDetailsSettings, Android.Net.Uri.Parse("package:" + CurrentContext.PackageName));
myAppSettingsIntent.AddCategory(Intent.CategoryDefault);
return Task.Run(() =>
{
try
{
CurrentContext.StartActivity(myAppSettingsIntent);
}
catch (Exception)
{
Toast.MakeText(CurrentContext.ApplicationContext, "Unable to open Settings", ToastLength.Short);
}
});
}
}
}
utilisation Android.App.Application.Context
Il y a une discussion de ce sujet sur le Forums