UI setzen über eigene Klasse

  • Hallo Community,


    ich bin neu in der Welt der Android-Programmierung und dies ist mein erster Thread.
    Ich versuche gerade die UI über eine eigene Klasse außerhalb der MainActivity zu aktualisieren.


    An diese Klasse reiche ich Moment getApplicationContext durch und ermittele daran die ID's der Controls.
    Dies funktioniert soweit. Allerdings, wenn ich versuche die Oberfläche über diese Klasse anzupassen wird die UI nicht angepasst.


    Laut meinen Log-Ausgabe wird die UI zwar gesetzt. Allerdings ist diese Änderung nicht sichtbar.


    Was mache ich falsch?
    Hier ein extrem vereinfachtest Beispiel.



    Noch eine zweite Frage:
    Wie kann ich für jedes Layout eine eigene Activityklasse anlegen in der Listener usw. plaziert werden.
    Bislang habe ich immer alle über die MainActivity.java abgebildet, was bei viel Code lässtig wird.


    Ich freue mich auf Antworten


    Julian.

  • Nur dadurch, dass Du irgendwo eine View Instanz eines bereits gezeigten XML anlegst, ändert das noch lange nichts an der Darstellung eines bereits instanziierten Views derselben XML.


    Bevor ich jetzt anfange mir den Kopf zu zerbrechen, wie Du das ganze (idealerweise auch threadsafe) zurückgespielt bekommst:
    Was genau hast Du eigentlich vor und wie kommst Du darauf, dass Dein Lösungsansatz ein guter ist?


    Zum Zweiten würde ich vorschlagen, Du lässt das mit den ganzen Activities lieber sein und steigst auf Fragmente um.
    Ansonsten legst Du einfach für jedes Layout eine eigene Activity an. Je nach IDE über 'Neu…->Android Activity' oder Ähnlichem. Oder händisch, dann musst Du daran denken, diese Activity auch in Deine AndroidManifest.xml einzutragen.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Du kannst beliebig neue Activities anlegen! Du musst nich alle Logik in deine MainAcitivty packen.
    Ich empfehle dir erstmal ein Tutorial zur Android-Programmierung durchzulesen!


    Du kannst von Activity A mittels Intent zu Activity B wechseln.

  • Danke zunächst für die Antwort.


    Was ich vor habe: Ich möchte meine UI als eigene Klasse(n) realisieren.
    Das heißt das ich über die Listener zunächst nur die Klassen mit der Anwendungslogik aufrufe.
    Und diese wiederrum die Klassen mit der UI-Logik.


    Ich dachte das ich hier keine Fragments brauche, da ich keine Layouts dynamisch aufbauen muss.
    Ich habe eine feste Anzahl von Elementen auf der Oberfläche, wo ich nur über den Code Eigenschaften setzen will.


    Würde es hier schon funktionieren die UI-Klassen in die MainActivity-Klasse einzubetten?
    Was wäre hier die schönste Lösung.
    Ohne, das ich alle Layouts auf Fragments umbauen muss.


    Nachtrag: Intent war ein gutes Stichwort. Danke für die Info.

  • In deiner Activity sollten eigentlich deine UI Elemente definiert werden. Denn du musst dort dein Layout an Android übergeben. Du kannst das gern in eigene Klassen auslagern, trotzdem muss am Ende in der Activity das Root-Element gesetzt werden. Zumindest fällt mir gerade kein Weg ein wie man es anders realisieren könnte.

  • Das heißt das ich über die Listener zunächst nur die Klassen mit der Anwendungslogik aufrufe.
    Und diese wiederrum die Klassen mit der UI-Logik.

    Wenn Du neu in der Androidwelt bist, solltest Du von solch esoterischen Lösungen dringend Abstand nehmen und es erst einmal 'richtig' machen.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!