Hirdetés

Új hozzászólás Aktív témák

  • thon73
    tag

    Időközben megtaláltam miért kell konstruktort készíteni DialogFragment-hez. A rendszer készít default konstruktort, de az érvényességi tartománya az osztályéval fog megegyezni. Itt viszont public konstruktor KELL. Másrészt, ha van paraméterezett konstruktor, akkor nem készül üres.
    Vagyis:
    public osztályban, ahol nincs konstruktor, ott nekünk sem kell készíteni.
    Nem public DialogFragment-nél, vagy ha van paraméterezett konstruktor, akkor kell készíteni public jelzővel és paraméter nélkül.
    Talán másnak is segít ez.

    De van egy másik elméleti kérdésem: Van egy Fragment (az egyszerűség kedvéért onRetainInstance(true), és ebben van egy TextView. Egy háttérszálon futó folyamat időnként kiüzen az UI szálra, és innen írja a TextView-t. Mikor lehet ezt büntetlenül megtenni? Melyik életciklusok között, vagy mit kell ellenőrizni? Vagy teljesen mindegy, akkor is írhatja, ha pl. a Fragment nem is látszik, vagy dettach-olva van? Van erre valami szabály?
    Köszi!

    No, kiteszteltem, hogyan működik. Ha a Frgamentben egy View objektum értéket kap, akkor a hozzá tartozó View mögötti objektum megmarad az életciklus végéig, tehát írható. A TextView-t még az onDestroy-ban is tudtam írni.
    Az más kérdés, hogy az onDestroyView magasságában a rendszer elbontja az egész View struktúrát, tehát írhatom az egyes objektumokat, csak megjelenni nem fog semmi.
    Az onCreateView viszont újraindul az életciklus elején, és - normál megoldás esetén - minden View objektumnak újra (new használatakor új) értéket ad.

    A lényeg, hogy nem kell külön ellenőrzés, a Fragment View objektumai az első onCreateView után bármikor írhatóak (az UI threadról), bár néha (onDestroyView és onCreateView között pl.) a kiírt érték nem jelenik meg; ill. egy adott View-ra hiavtkozó objektum megváltozhat (az onCreateView ismételt lefutásakor).

    Ez némileg egyszerűsítette a kódomat...

Új hozzászólás Aktív témák