Dialoge anzeigen

dkdoemk43

Mitglied
Ich habe zwei Dialoge und möchte hintereinander den Dialog1 angezeigt haben, wenn man auf einen Button drückt, erscheint der Dialog2 (der erste verschwindet) wenn man bei ihm auf einen Button drückt, erscheint wieder Dialog1.

Nun sieht das ganze bei mir ungefähr so aus

Java:
class Dialog1{

  BspKlasse1 bspObj1;
  BspKlasse2 bspObj2;
  ... //weitere Instanzvariabeln und Deklarierungen

  public Dialog1(BspKlasse1 bspObj1, BspKlasse2 bspObj2){
    ...
  }

  public void dialogAnzeigen(){

    ...//Dialog wird sichtbar gemacht

    //Button wird Listener hinzugefügt
    ... { 
      ...
      Dialog2 dialog2 = new Dialog2(bspObj1, bspObj2, Dialog1.this);
      dialog2.dialogAnzeigen();
    }
  }
}

class Dialog2{

  BspKlasse1 bspObj1;
  BspKlasse2 bspObj2;
  Dialog1 dialog1;

  public Dialog2(BspKlasse1 bspObj1, BspKlasse2 bspObj2, Dialog1 dialog1){
    ...
  }

  public dialogAnzeigen(){

    ...//dialog wird sichtbar gemacht

    //Button wird Listener hinzugefügt
    ...{
      ...
      dialog1.dialogAnzeigen();
    }
  }
}

Irgendwie habe ich das Gefühl, dass das nicht der eleganteste, bzw. beste Weg ist.

Passt es so schon, oder sollte ich die Dialoge mit statischen Methoden verwenden, oder gäbe es noch eine andere, bessere Lösung?

Danke im Voraus!
 
Zuletzt bearbeitet von einem Moderator:
Also auf keinen Fall mit statischen Methoden. DAS wäre unobjektorientiert. Prinzipiell finde ich, man sollte die Behandlung von GUI-Events extern auslagern. Ich sehe, warum Du es hier gemacht hast, weil Du da praktischerweise gleich die Model-Instanzen weiterreichen kannst, aber ich glaube, das Handeln von Events ist ein Concern, der vom GUI-Element abgetrennt gehört.
 
Ich programmiere das ganze für die Android-Plattform und da braucht man BspObj1 und -2, nur um den Dialog überhaupt anzeigen zu können (Context und Resources).

das Handeln von Events ist ein Concern, der vom GUI-Element abgetrennt gehört.

Wie könnte man das machen? Meines Erachtens ist es bei Android aber üblich, dass man die Listener und das ganze Drumherum in der selben Klasse behandelt, in der auch das GUI-Element erzeugt wird. Oder hast du das anders gemeint?

Der entscheidende Punkt bei meiner Frage ist ja eigentlich, ob es elegant ist, dass man GUI-Element1 vom GUI-Element2 aus mit der Referenz des GUI-Element1 wieder aufruft.
 
Zuletzt bearbeitet:
aahhhh android is natürlich was ganz adneres ^^

mach es doch über fragmente die ein/ausgeblendet werden
bzw hmm ich hab das auch mal gemacht

muss nurm al nachscahuen öööhhmmm...

genau wie in mein ersten post es gibt shcon nen dialogklasse
die kannst ableiten und anpassen
und wichtig muss in nem nebenläufigen thread laufen sonst blockiert es alles

wenn ich mich richtig entsinne
ok hab nur das alertdialog genutzt aber so viel anders wird das ja nich

soweit ich mich erinnern kann gibt es für alle möglcihen anwendungen shcon vordifinierte dialoge
was hast denn vor mit den beiden?
 
Zuletzt bearbeitet:
ach und die Activity klasse zu deinem fensterchen is im endeffeckt die steuerklasse die gui wird in anderen dateien difinirt und erzeugt

die klasse hinter ihr steuert die gui nur
da wird das mvc eingehalten
 
Also das heißt, ich soll eine Methode in der Steuerklasse aufrufen, die dann wieder Dialog1 aufruft?

was hast denn vor mit den beiden?

Im Dialog1 soll der Benutzer einen Wert einstellen und wenn dieser unrealistisch hoch, bzw. klein ist, wird im Dialog2 darauf hingewiesen (->Tippfehler?). Dann kann's der User nochmal versuchen 🙂

PS: Selbstverständlich benutz ich den vorgefertigten AlertDialog. Bin doch nicht blöd 😀
 
ich würde es in dem Dialogobjekt alles reinpacken verhalten des dialogs und so

wenn du den dialog selber schreibst kannst auch an dem eingabefeld nen listener ranhängen
keypressed oder sowas
dann könntest direkt bei der eingabe nachfragen (vllt 2 sec verzögert via timer)
oder bei der okbutton methode

1. prüfst ob alles io is
2. wenn ja super aufrufen (wenn abgeleitet)
3. wenn nicht 2. dialog aufrufen und den dialog nicht schließen
 
ich würde es in dem Dialogobjekt alles reinpacken verhalten des dialogs und so

Also man benutzt ja ein AlertDialog.Builder - Objekt, um den Dialog zu erzeugen (es ist also denkbar). Meinst du, dass ich einfach alles in eine Klasse 'reinpacke'?

Das könnte mein (vermeintliches? 🙂 ) Problem wunderbar lösen, aber ist es nicht wieder unelegant?

3. wenn nicht 2. dialog aufrufen und den dialog nicht schließen

Funktioniert leider nicht, weil beim Drücken eines Buttons das Dialogfenster standardgemäß geschlossen wird. Um das Problem zu umgehen, müsste ich den OnShowListener der Klasse AlertDialog überschreiben, wobei dieser Weg irgendwie erst ab API 8 möglich ist (Und nur deshalb das Minimum-API anheben?). Frag mich nicht warum.

( android - How to prevent a dialog from closing when a button is clicked - Stack Overflow )

2. wenn ja super aufrufen (wenn abgeleitet)

Was würde mir hier eine Vererbung (?) bringen? Habe ich noch nicht so genau verstanden.
 
Also man benutzt ja ein AlertDialog.Builder - Objekt, um den Dialog zu erzeugen (es ist also denkbar). Meinst du, dass ich einfach alles in eine Klasse 'reinpacke'?
In deinem Fall macht es wohl mehr Sinn wenn du den bisschen extra Code in Kauf nimmst und dir selbst mit der Klasse PopupWindow den Dialog schreibst der auch die zwei Pages kann.

Alternativ könntest du das in eine Activity packen und mit einem FragmentPageViewer ausstatten. Dann könnte der Benutzer auch zurück swipen, wenn dir das gefällt. (Für das niedrige API-Level brauchst du dann das Android Compatibility Package.)
 

Zurück
Oben