Sliding Tabs Fragments mit CursorLoader

derjens

derjens

Ambitioniertes Mitglied
5
Hallo Leute.

Ich habe ein ziemlich komisches verhalten bei Sliding Tabs Fragments mit CursorLoadern,
und bin etwas am verzweifeln da ich mir nicht erklären kann wo der Fehler liegt.

Und zwar habe ich folgende Situation.

Ich habe einen Sliding Tabs Fragment in dem ich fünf weitere Fragmente lade.
Das erste Fragment wird angezeigt und das zweite wird schon mal geladen.
Die Methode
Code:
onCreateLoader(int id, Bundle args)
und
Code:
onLoadFinished(Loader<Cursor> loader, Cursor data)
werden für das zweite Fragment ausgeführt.
Swipe ich hin und her funktioniert auch alles wunder bar.

ABER nur solange ich im ersten Fragment keinen CursorLoader benutze.
Ist im ersten Fragment ein
Code:
getLoaderManager().initLoader(cursorId, null, this);
vorhanden wird im zweiten Fragment nur die onCreateLoader(int id, Bundle args)
Methode ausgeführt aber onLoadFinished(Loader<Cursor> loader, Cursor data)
wird erst ausgeführt wenn das Fragment angezeigt wird.

Swipe ich nicht ganz zum nächsten Fragment kann ich sehen das es nicht
preloaded ist. Wird das Fragment dann ganz angezeigt wird nach einem
kurzen augenblick onLoadFinished(Loader<Cursor> loader, Cursor data) ausgeführt.

Seltsam ist auch das wenn ich auf einen Tap drücke das zu vor nicht fertig geladene
Fragment augenblicklich mit allen Daten (also alles was in onLoadFinished geschieht)
angezeigt wird als ob alles ordnungsgemäß funktioniert hätte.

Um das noch mal zusammen zu fassen.
Ist im ersten Fragment kein CursorLoader verwendet worden funktioniert alles wie gewollt.
Ist im ersten Fragment ein CursorLoader verwendet worden wird in den
folgenden Fragments die onLoadFinished(Loader<Cursor> loader, Cursor data) Methode erst ausgeführt wenn das Fragment vollständig angezeigt wird.



Als Pager Adapter benutze ich den FragmentPagerAdapter.
In der getItem(int position) Methode hole ich mir die Fragments
Code:
        @Override
        public Fragment getItem(int position) {
            switch(position) {
                case 0:                    
                    return MainFragment.newInstance();
                case 1:                   
                    return ListFragment.newInstance();
                case 2:                   
                    return DetailFragment.newInstance();
                case 3:
                    return NochEinFragment.newInstance();
                case 4:
                    return UndNochEinFragment.newInstance();
            }
            return null;
        }


Wäre toll wenn vielleicht irgend jemand einen Tip hätte woran das liegen könnte.

Grüße
derjens
 
Danke für die Antwort.

War genau der Hinweis den ich brauchte.

Scheint also ein Bug in der SupportLibrary zu seien.

Hab mir schon einen Wolf gegoogelt aber nichts gefunden.

Danke noch mal.
 

Ähnliche Themen

R
Antworten
6
Aufrufe
1.021
swa00
swa00
Tiefkuehlpizza
Antworten
2
Aufrufe
958
Tiefkuehlpizza
Tiefkuehlpizza
B
Antworten
4
Aufrufe
509
bb321
B
Zurück
Oben Unten