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

T

Terth

Neues Mitglied
0
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");
    }
 

Ähnliche Themen

M
Antworten
2
Aufrufe
864
jogimuc
J
Tiefkuehlpizza
Antworten
2
Aufrufe
954
Tiefkuehlpizza
Tiefkuehlpizza
Zurück
Oben Unten