1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Fragment isAdded() = true aber remove nicht möglich wegen Fragment not Added Excep.

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Terth, 25.01.2012.

  1. Terth, 25.01.2012 #1
    Terth

    Terth Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    04.08.2011
    Hallo,

    wie im Titel beschrieben habe ich dieses sehr strange Problem. Es tritt auf sobald ich meine App mit dem HomeButton pausiere und dann wieder resume() und z.B. das aktuelle Fragment wechsle.
    Der Rahme der App sieht so aus das ich zwei Fragments habe, die wieder jeweils aus 2 subFragments bestehen. Sobald ich durch die ActionBar von dem einen in das andere wechsle und vorher den HomeButton gedrückt habe, kommt diese Exception und hindert mich gerade.
    Mit drücken des HomeButtons wird onStop von meinem Fragment durchlaufen, da meckert er zunächst das er kein commit von einer Transaction ausführen kann wenn vorher onSaveInstanceState gelaufen ist. Das kümmert mich auch nicht so habe ich durch try catch block gelöst. Wenn ich aber nach dem resume meiner app auf Fragment Konstrukt 2 wechseln will schmiert er mit der Fehlermeldung Fragment not added ab.
    Die beiden Hauptfragments die die GUI ausmachen entfalten jeweils eine GUI in der 2 weitere Fragments im xml eingetragen werden. laut fragmentmanager befinden sich diese beiden auch noch in dem added array, allerdings lassen sie sich nicht mehr durch remove zum entfernen bringen, obwohl ich sie mit manager.findFragmentById(R.id.myFragment) identifizieren kann und sie als isAdded angezeigt werden. Die Adressen der Fragments im Manager und der Fragments die ich mir mit findFragmentBy... hole sind ebenfalls gleich. Ich weiß echt nicht weiter.

    Liebe grüße
    Terth

    PS:
    Code:
    @Override
        public void onStop()
        {
            super.onStop();
            FragmentManager manager = getFragmentManager();
            
            Log.d("Test", "BackStackEntries: "+manager.getBackStackEntryCount());
            
            try
            {
                FragmentTransaction ft = manager.beginTransaction();
                Fragment fList = manager.findFragmentById(R.id.fragment_ontology_list);
                Fragment fContent = manager.findFragmentById(R.id.fragment_ontology_content);
                boolean bisAdded = fList.isAdded();
                ft.remove(fList);
                ft.remove(fContent);
                ft.commit();
            }
            catch(IllegalStateException e)
            {
                Log.d("Test", getClass().getName()+": "+e.toString());
            }
            
            Log.d("Test", getClass().getName()+": Stop");
        }
    
     

Diese Seite empfehlen