2011-09-21 3 views
0

Nous avons une tache d'un problème avec FragmentViewPager et Fragments.Android FragmentVIewPager et l'écran re-dessin numéro

Nous utilisons CursorLoader pour remplir une liste dans un fragment. Le pager de vue se compose de 4 pages. Fondamentalement, lorsque vous passez d'un fragment à un autre, cela fonctionne très bien, mais une fois que nous extrayons des données d'un service dans le contexte du fragment A et que nous glissons vers le fragment B puis C et ainsi de suite, la liste apparaît dans le fragment. pas charger, c'est-à-dire un écran vide, mais si l'écran de l'appareil est éteint, puis sur la liste dans le Fragment affiche les données.

Dans la méthode onLoadFinished du chargeur de curseur, nous réinitialisons l'adaptateur à chaque actualisation.

Je suis perplexe pour une solution. Aucun conseil?

Informations supplémentaires, je reçois aussi parfois cette trace de pile.

09-21 15: 20: 44,489: INFO/dalvikvm (21106): Landroid/view/ViewRoot $ CalledFromWrongThreadException Seul le fil ;: d'origine qui a créé une hiérarchie de vue peut toucher son point de vue. 09-21 15: 20: 44.497: INFO/dalvikvm (21106): à android.view.ViewRoot.checkThread (ViewRoot.java:2932) 09-21 15: 20: 44.497: INFO/dalvikvm (21106): au android.view.ViewRoot.requestLayout (ViewRoot.java:629) 09-21 15: 20: 44.501: INFO/dalvikvm (21106): à android.view.View.requestLayout (View.java:8267) 09 -21 15: 20: 44.501: INFO/dalvikvm (21106): à android.view.View.requestLayout (View.java:8267) 09-21 15: 20: 44.501: INFO/dalvikvm (21106): at android.view.View.requestLayout (View.java:8267) 09-21 15: 20: 44.501: INFO/dalvikvm (21106): à android.view.View.requestLayout (View.java:8267) 09- 21 15: 20: 44.517: INFO/dalvikvm (21106): à android.widget.RelativeLayout.requestLayout (RelativeLayout.java:257) 09-21 15: 20: 44,517: INFO/dalvikvm (21106): à android.view.View.requestLayout (View.java:8267) 09-21 15: 20: 44.517: INFO/dalvikvm (21106): au android.view.View.requestLayout (View.java:8267) 09-21 15: 20: 44.517: INFO/dalvikvm (21106): au android.view.View.requestLayout (View.java:8267) 09-21 15: 20: 44.517: INFO/dalvikvm (21106): à android.view.View.requestLayout (View.java:8267) 09-21 15: 20: 44.517: INFO/dalvikvm (21106): à android.view.View.requestLayout (View.java:8267) 09-21 15: 20: 44.517: INFO/dalvikvm (2110 6): à android.view.View.requestLayout (View.java:8267) 09-21 15: 20: 44.517: INFO/dalvikvm (21106): à android.view.View.setFlags (View.java: 4641) 09-21 15: 20: 44.517: INFO/dalvikvm (21106): à android.view.View.setVisibility (View.java:3116) 09-21 15: 20: 44.517: INFO/dalvikvm (21106): à android.widget.AdapterView.updateEmptyStatus (AdapterView.java:713) 09-21 15: 20: 44.517: INFO/dalvikvm (21106): à android.widget.AdapterView.checkFocus (AdapterView.java:697) 09-21 15: 20: 44.517: INFO/dalvikvm (21106): à android.widget.AdapterView $ AdapterDataSetObserver.onInvalidated (AdapterView.java:812) 09-21 15: 20: 44.525: INFO/d alvikvm (21106): au android.database.DataSetObservable.notifyInvalidated (DataSetObservable.java:43) 09-21 15: 20: 44.525: INFO/dalvikvm (21106): à android.widget.BaseAdapter.notifyDataSetInvalidated (BaseAdapter.java:54) 09-21 15: 20: 44.525 : INFO/dalvikvm (21106): à android.widget.CursorAdapter MyDataSetObserver.onInvalidated $ (CursorAdapter.java:391) 09-21 15: 20: 44,525: INFO/dalvikvm (21106): à android.database.DataSetObservable .notifyInvalidated (DataSetObservable.java:43) 09-21 15: 20: 44.525: INFO/dalvikvm (21106): à android.database.AbstractCursor.deactivateInternal (AbstractCursor.java:89) 09-21 15:20: 44.525: INFO/dalvikvm (21106): à android.database.AbstractCursor.close (AbstractCursor.java:108) 09-21 15: 20: 44.525: INFO/dalvikvm (21106): à android.database.sqlite.SQLiteCursor.close (SQLiteCursor.java:504) 09-21 15: 20: 44.525: INFO/dalvikvm (21106): at android.database.sqlite.SQLiteCursor.finalize (SQLiteCursor.java:594) 09-21 15: 20: 44,525: INFO/dalvikvm (21106): à dalvik.system.NativeStart.run (Méthode natif)

Merci,

Akshay

Répondre

0

Il nous a semblé avoir compris la raison pour laquelle cela se produit, mais ne vraiment pas une explication, peut-être que quelqu'un pourrait élaborer sur ce point. La réponse du serveur a utilisé un service + ResultReceiver dans le fragment pour notifier l'interface utilisateur de l'achèvement httpservice d'arrière-plan qui fonctionne correctement lorsqu'il est utilisé dans une activité, mais avec un fragment tout crochet dans l'interface utilisateur du gestionnaire a entraîné le L'interface utilisateur se bloque, comme si une modification de l'interface utilisateur était faite à partir d'un thread séparé, sans plainte cohérente dans les journaux, autre que l'erreur occasionnelle comme vu ci-dessus. Une fois que nous avons utilisé un gestionnaire dans le récepteur de résultats pour informer l'interface utilisateur d'un changement, nous ne sommes plus confrontés à ce problème.

Akshay