2010-06-25 4 views
2

J'essaie de conserver une préférence booléenne en synchronisation avec une valeur dans un fournisseur de contenu, et de réussir à l'exception de ce problème. Lorsque je définis la préférence dans la méthode onResume() (car la valeur a peut-être été modifiée dans le fournisseur de contenu), la case à cocher de la vue reflète toujours la valeur pré-onResume. En ce qui me concerne, cette préférence pourrait être entièrement virtuelle et non persistante, mais si elle doit persister pour que les roues tournent, c'est bien aussi. L'objectif final est une case à cocher dans les préférences de mon application qui reflète et met à jour la valeur dans le fournisseur de contenu.mettre à jour la vue lorsque la préférence a changé dans PreferenceActivity.onResume (Android)

Répondre

0

Je soupçonne que le PreferenceActivity définit d'abord la case à cocher dans la méthode onRestoreInstanceState(), puis votre méthode onResume() est appelée plus tard dans le cycle de vie. Bien que vous changiez la valeur de préférence, le code de synchronisation checkbox est déjà terminé.

Alors peut-être vous pouvez remplacer onRestoreInstanceState(), mettre à jour la valeur de préférence, puis appelez super.onRestoreInstanceState() en dernier.

+0

Est-ce que onRestoreInstanceState() est appelé chaque fois que l'activité revient à la visibilité? J'ai eu l'impression que ça pouvait aller directement de onPause() à onResume(). – loganj

+0

Pas de dés. Il semblerait que onRestoreInstanceState() ne soit pas appelé en revenant d'une pause. – loganj

+0

Il semble qu'il n'y ait pas d'écouteur de changement enregistré avec 'SharedPreferences', donc quand vous éditez le' Preference' directement, la couche d'interface utilisateur n'en entend jamais parler. Je vais rester dessus. – loganj

Questions connexes