none
Xamarin Forms system Null reference exception au lancement de de l'application sur Emulator RRS feed

  • Discussion générale

  • Bonjour, je développe une application Xamarin Forms sur Visual Studio 17. je n'ai aucune erreur de code.

    Quand je lance mon application sur un emulator, j'obtient une erreur sur MainActivity : System Null Référence exception sur un Button. Je ne comprend pas très bien pourquoi .

    using System;
    
    using Android.App;
    using Android.Content.PM;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.OS;
    using System.Collections.Generic;
    using X_Logistique.Droid.Resources;
    
    namespace X_Logistique.Droid
    {
        [Activity(Label = "Logistique", Icon = "@drawable/IconAppXLog", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
        public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
        {
            ListView LstData;
            List<Releves> lstreleves = new List<Releves>();
            DataBase db;
            protected override void OnCreate(Bundle savedInstanceState)
            {
                TabLayoutResource = Resource.Layout.Tabbar;
                ToolbarResource = Resource.Layout.Toolbar;
    
                base.OnCreate(savedInstanceState);
                SetContentView(Resource.Layout.layout1);
                // Create DB
    
                db = new DataBase();
                db.CreateDataBase();
                //global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
                //LoadApplication(new App());
                LstData = FindViewById<ListView>(Resource.Id.listView);
                var editDate = FindViewById<EditText>(Resource.Id.EdtDate);
                var editImmat = FindViewById<EditText>(Resource.Id.EdtImmat);
                var BtnAdd = FindViewById<Button>(Resource.Id.BtnAdd);
                var BtnEdit = FindViewById<Button>(Resource.Id.BtnEdit);
                var BtnDelete = FindViewById<Button>(Resource.Id.BtnDelete);
    
                //Load Data
                LoadData();
    
                //Event
    
                BtnAdd.Click += delegate
                {
                    Releves rel = new Releves()
                    {
                        DateReleve = Convert.ToDateTime(editDate.Text),
                        Imat = editImmat.Text
    
                    };
                    db.InsertIntoTable_Releves(rel);
                    LoadData();
                };
    
                BtnEdit.Click += delegate
                {
                    Releves rel = new Releves()
                    {
                        ID = int.Parse(editDate.Tag.ToString()),
                        DateReleve = Convert.ToDateTime(editDate.Text),
                        Imat = editImmat.Text
                    };
                    db.UpdateTable_Releves(rel);
                    LoadData();
                };
    
                BtnDelete.Click += delegate
                {
                    Releves rel = new Releves()
                    {
                        ID = int.Parse(editDate.Tag.ToString()),
                        DateReleve = Convert.ToDateTime(editDate.Text),
                        Imat = editImmat.Text
                    };
                    db.DaleteTable_Releves(rel);
                    LoadData();
                };
    
                LstData.ItemClick += (s, e) =>
                {
                    //Set Background for selectItem
                    for (int i = 0; i < LstData.Count; i++)
                    {
                        if (e.Position == 1)
                        {
                            LstData.GetChildAt(i).SetBackgroundColor(Android.Graphics.Color.DarkGray);
                        }
                        else
                        {
                            LstData.GetChildAt(i).SetBackgroundColor(Android.Graphics.Color.Transparent);
                        }
                    }
    
                    //Binding Data
    
                    var txtDate = e.View.FindViewById<TextView>(Resource.Id.textView1);
                    var txtImmat = e.View.FindViewById<TextView>(Resource.Id.textView2);
                    editDate.Text = txtDate.Text;
                    editDate.Tag = e.Id;
                    editImmat.Text = txtImmat.Text;
    
                };
            }
    
            private void LoadData()
            {
                lstreleves = db.SelectTableReleves();
                ListViewAdapter adp = new ListViewAdapter(this, lstreleves);
                LstData.Adapter = adp;
            }
        }
    }


    JF Collombet ® CreateSpecificCulture

    lundi 27 août 2018 05:42

Toutes les réponses

  • Bonjour Jean-François,

    Quand je lance mon application sur un emulator

    De quel émulateur s’agit-il ? Est-ce que vous utilisez d’appareils virtuels spéciales (Microsoft Hyper-V ou HAXM) comme décrit dans cet article ?

    Est-ce que l’erreur survient également avec ces deux lignes si vous enlevez le commentaire ?

        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());

    Cordialement,
    Dimitar

    mardi 28 août 2018 05:35
    Modérateur
  • Bonjour et merci   pour votre réponse. Voici l'Emulator utilisé :

    Si 'enlève le commentaire j'obtient exactement la même erreur.


    JF Collombet ® CreateSpecificCulture

    mardi 28 août 2018 06:11