(Xamarin.Android) C# TextView.Text eines Custom Alert Dialog ändern?

  • Antworten:4
  • Bentwortet
Gelöschter Account
  • Forum-Beiträge: 70

30.06.2016, 10:59:23 via Website

Hallo Leute versuch den Text eines Custom Alert Dialog zu ändern bekomme es aber nicht genau hin.
Auch im Internet werde ich diesbezüglich nicht fündig deswegen frage ich mal hier vielleicht weis einer von euch woran es liegt.

Hier ist mein bisheriger Code:

//Das sind die Textviews von der CustomView  vom CustomAlertDialog
TextView firma = FindViewById<TextView>(GuscheinQR.Resource.Id.Firma);
                            firma.Text = companyresult;
                            TextView guthaben = FindViewById<TextView>(GuscheinQR.Resource.Id.guthaben);
                            guthaben.Text = "€ " + guthabenresult;

  //Gutschein Aktzeptiert Alert Dialog 
                            Android.App.AlertDialog.Builder alert = new Android.App.AlertDialog.Builder(this, GuscheinQR.Resource.Style.MyAlertDialogStyle);
                            alert.SetTitle("Akzeptiert");
                            alert.SetView(GuscheinQR.Resource.Layout.AlertDialogAkzeptiert);                           
                            alert.SetPositiveButton(" Abbuchen", (senderAlert, args) =>
                            {
                            });
                            alert.SetNegativeButton("Abbrechen ", (senderAlert, args) =>{
                            });
                            Dialog dialog = alert.Create();
                            dialog.Show();

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.06.2016, 12:33:07 via Website

Mit Funktioniert nicht kann ich nicht viel anfangen.
Was genau funktioniert nicht und mit welchem Error?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

30.06.2016, 12:37:57 via Website

[ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object.

Und der Error bleibt genau hier stehen:

 firma.Text = companyresult;

Denke das Problem dabei ist dass ich versuche den TextView Text des AlertDialogLayouts zu ändern bevor das Layout überhaupt sichtbar ist.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.06.2016, 12:48:01 via Website

Dann gibt es entweder deine TextView nicht / wird nciht auf denm Layout gefunden oder dein String ist null

Genau ds kann sein.
Normalerweise (in Java) muss man das Layout erst "generieren" lassen (inflaten) bevor man TextViews daraus benutzen kann.-
Man hat dann ein View objekt, so wie ich das sehe versuchst du die TextView aus dem Main Layout zu laden was nicht geht, da es diese dort nicht gibt.

— geändert am 30.06.2016, 12:49:40

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 70

30.06.2016, 13:00:02 via Website

Danke für das Stichwort "Inflater".
Hab mich jetzt wieder daran erinnert, dass ich ja die View brauche und wie man das bei C# macht.

Sieht jetzt so aus und so funktioniert es auch:

                        //Gutschein Aktzeptiert Alert Dialog 
                        View content = LayoutInflater.Inflate(GuscheinQR.Resource.Layout.AlertDialogAkzeptiert, null);
                        Android.App.AlertDialog.Builder alert = new Android.App.AlertDialog.Builder(this,
                        GuscheinQR.Resource.Style.MyAlertDialogStyle);
                        alert.SetTitle("Akzeptiert");
                        alert.SetView(content);
                        TextView firma = content.FindViewById<TextView>(GuscheinQR.Resource.Id.Firma);
                        firma.Text = companyresult;
                        TextView guthaben = content.FindViewById<TextView>(GuscheinQR.Resource.Id.guthaben);
                        guthaben.Text = "€ " + guthabenresult;
                        alert.SetPositiveButton(" Abbuchen", (senderAlert, args) =>
                            {  });
                        alert.SetNegativeButton("Abbrechen ", (senderAlert, args) =>{
                        });
                        Dialog dialog = alert.Create();
                        dialog.Show();

Wie man sieht hole ich die View "content".
Sage dem Adapter die View content verwenden.
Und dadurch dass ich die Variable habe kann ich nun die TextView mit content suchen.

Antworten