Fragmente in einem Linearlayout

  • Antworten:1
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 28

28.08.2014, 21:00:47 via Website

Guten Tag alle Zusammen,

diese verflixten Fragmente. Nein Spaß bei Seite, ich lerne ja gerade erst richtig Android und bräuchte unbedingt Hilfe. Es geht um folgendes:

Ich hab eine Liste mit Objekten. Diese Objekte kann man nun öffnen. Neben andere Daten findet man dort eine Liste. Diese Liste wird im Programmcode erstellt. Das heißt ich adde einem Layout einfach ein Fragment.

Das ganze sieht so aus:

    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    for(int i = 0; i < objecte.size(); i++) {
        Fragment frag = new Fragment(i);
        fragmentTransaction.add(R.id.layout, frag, "frag"+i);
    }
    fragmentTransaction.commit();

Das ganze funktioniert auch soweit ABER... Wenn ich ein Objekt öffne und wieder zurück gehe und ein anderes Object öffne so bekomme ich folgenden Error:

Activity has been destroyed at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java: 1295)

Ich hoffe ihr könnt mir helfen denn ein Fragment an dieser Stelle wäre wirklich super wichtig da ich das Object welches durch das Fragment dargestellt wird auch öfters woanders brauche.

Notfalls würde ich eine Activiy schreiben und jede Activity welche diese Funktionen braucht einfach erben lassen. Wäre zwar eine Möglichkeit aber nicht sauber da ich die XML-File dann quasi synchron halten muss.

Vielen vielen Dank im Vorraus.

Antworten
  • Forum-Beiträge: 28

29.08.2014, 09:20:06 via Website

Okey ich hab das Problem nun weitestgehend akzeptable gelöst so das ich das Fragment nun überall benutzen kann. Folgendes, doch sehr einfaches hab ich gemacht:

Zuerst eine ganz normale Fragmentklasse inklusive XML erstellt.

Möchte man dieses Fragment nun in einen Layout beliebig oft verwendet so muss man einfach nur eine public View getView(inflater, activity)-Methode schreiben, welche die Activity und den Inflater bekommt in der das Fragment eingebunden werden soll. Mittels "View view = inflater.inflate(R.layout.fragment_design, null);" Erzeugt man dann eine View die man dann einem Layout hinzufügen kann.

Das ganze funktioniert soweit ganz gut. Warum ich nicht früher drauf gekommen bin weiß ich selber nicht. Naja man ist noch am lernen ;-)

Antworten