dynamische View Erzeugung / eigene View Klasse / nach hinzufügen nicht in der Aktivity angezeigt

  • Hallo werte Menschen,


    ich stehe gerade bei meiner App ziemlich auf dem Schlauch und es will einfach nicht funktionieren.


    Es gibt meine Activity (myActivity.java), die ein Toolbar hat (klappt) und noch eine View (ViewContainer.java) anzeigen soll, die ein Image und eine bestimmte Anzahl an Buttons darüber beinhaltet. Da es verschiedene Images sein können und auch verschiedene Buttons (Anzahl, Position, Text) habe ich den funktionierenden Code nun von der Activity in Container.java verschoben um es generisch in einer Klasse zu halten (der Code hat also schonmal funktioniert). Nun zeigt die Aktivity nicht als die Toolbar an. ich vermute ich muss die activity irgendwie aktualiseren, weiß aber nicht wie
    :?:
    Das ganze hat noch einige schönheitsfehler, wenn jemand dazu Tipps oder anregungen hat, nehme ich diese gerne entgegen. Sonst würde ich iterativ über den Code gehen, und probleme nach und nach generisch lösen.


    Viele Grüße, D(r)eadlock

  • Hi :D


    Also: Dein Button und dein Bild erscheinen nicht mehr, sobald du es in die eigene Klasse auslagerst, richtig?
    Also falls das der Fall ist: Du fügst die graphischen Objekte mit this.addView hinzu.
    Das klappt in deinem Hauptactivity gut, weil dort innen drin "this" auch dem Hauptactivity entspricht.


    Bist du jetzt aber in einer eigenen Klasse, dann ist "this" diese Klasse.
    Du fügst es also nicht im Hauptactivity hinzu, sondern in deiner nebenläufigen Klasse.
    Stattdessen kannst du deiner Klasse eine Referenz auf das Hauptactivity hinzufügen (übergibst du eh schon im Konstruktor an die Variable c).
    Statt "this".add machst du dann "referenzAufHauptActivity".add


    Konkret:
    Ersetze:

    Code
    this.addView(text_bnt);


    durch:

    Code
    c.addView(text_bnt);


    (Bei this.addView(myImageView); natürlich das gleiche).


    PS: Wo erstellst du eig. dein ViewContainer-Objekt? Rufst du init() auf?

  • Das stimmt so nicht. Da die Containerklasse von einem Layout erbt, kannst du dem Layout mit "this.addView" auch weitere Views hinzufügen. Was ich jetzt spontan beim überfliegen des codes sehe, das keine parameter zu der containerklasse angegeben werden, bevor sie zum mainlayout hinzugefügt wird. Vielleicht musst du einfach noch die width und height für deinen container angeben.

  • Vielen Dank für den Hinweis. Ich habe im Construktor


    Java
    LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    this.setLayoutParams(vp);

    ergänzt. Leider werden immer noch keine Elemente angezeigt. ;(

Jetzt mitmachen!

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