Fragment Replace Duplicate ID

  • Hi an alle zusammen,


    suche jemanden, der Erfahrung mit folgendem Fehler hat:


    Problem besteht bei einem Fragmentaustausch durch das selbe Fragment(aber eine neue Instanz). Das erste Fragment wird angezeigt, beim zweiten stürtzt er dann ab.
    Vieles schon ausprobiert, aber nichts hat geholfen...


    Aktuell:

    Code
    if (this.mTwoPane)
        {
          if (PupilDetail != null) {getSupportFragmentManager().beginTransaction().remove(PupilDetail).commit(); PupilDetail.onDestroy();} //Versuch von mir -> Klappt nicht (PupilDetail = Globale Variable)
          Bundle bundle = new Bundle();
          bundle.putString("item_id", paramString);
          PupilDetail = new PupilDetailFragment();
          PupilDetail.setArguments(bundle);
          
          getSupportFragmentManager().beginTransaction().replace(R.id.pupil_detail_container, PupilDetail).commit();
        }


    Vielen Dank schonmal ;)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • Nutzt du die Support Library?
    Vermutlich hast du im XML an Zeile #5 ein Fragment eingetragen. Das wird dann nach android.app.fragment aufgelöst, was auf API 10 zu Problemen führt.


    Ich konnte dieses Problem nur umgehen, indem ich das gesamte Layout im Code erstellt habe.
    Im konkreten Fall habe ich einen ViewPager mit der id 'pager_container' angelegt. In der onCreateView des Fragments lade ich dann das Layout und packe das View mit der entsprechenden ID als Hauptview, welcher ich dann die weiteren Fragmente unterjubel.


    Nur dürfte es dann beim ersten Mal schon nicht laufen...


    Ich glaub, ich habs. ^^

    Zitat

    07-01 21:33:07.315: E/AndroidRuntime(10120): Caused by: java.lang.IllegalArgumentException: Binary XML file line #5: Duplicate id 0x7f090022, tag null, or parent id 0x0 with another fragment for de.so.myteach.PupilDetailMainInfoFragment


    Das ist zumindest der einzige Punkt, den du noch anpassen kannst.
    Nämlich via

    Java
    getSupportFragmentManager().beginTransaction().replace(R.id.pupil_detail_container, PupilDetail, PupilDetail.getClass().getCanonicalName()).commit();


    Also einfach irgend einen String (ich bevorzuge den Klassennamen) als Tag mitgeben, dann sollte das laufen.



    BTW: ein onDestroy() manuell aufrufen ist schon so ziemlich der falscheste Fehler, den man machen kann. ;)

    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!«

  • Wenn man verzweifelt ist probiert man vieles ...
    Ich probiere das nachher mal aus.
    Ansonsten lade ich das mal in dem Clone hoch. Dann kannst du dir alles angucken :)
    Hänge nämlich daran ziemlich böse fest und komme nicht weiter...
    Danke schonmal

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • Klappt leider auch nicht...
    Egal ob ich einen unique Schlüssel habe oder nicht ...

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • +hm+ Das sieht übel aus.


    Gemäß StackOverflow funktioniert Fragment in Fragment nicht.
    Zumindest nicht via XML Layout. Und da fragen sich einige Leute wirklich, warum so wenig für Android entwickelt wird...


    Warum das zu so einem Käse führt, wer weiß. 'Behaves undocumented' bedeutet offenbar genau das.

    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!«

  • Na super...
    Hätte nicht gedacht, dass das so schwierig wird.
    Kann ich nicht dann im Constructor der Methode das ChildFragment dann setzen? Ansonsten in der Methode wäre schon bescheuert...


    Ich hab auch mal versucht die Fragments irgendwie mit dem ChildManager zu löschen. Klappt aber auch nicht...

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

    Einmal editiert, zuletzt von Kogoro ()

Jetzt mitmachen!

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