Mon point de vue sont en cours de réinitialisation sur le changement d'orientation
J'ai une petite activité avec un EditText et une imageview et un bouton. Lorsque vous appuyez sur le bouton, il lance la caméra pour la suite, et quand il revient il modifie l'imageview à la photo que vous avez prise.
Mais quand les changements d'orientation, l'imageview repasse à la valeur par défaut sur la mise en page.
Ce que j'ai essayé de faire a été paramètre un booléen appelle la coutume, et quand vous prenez une photo, il définit à true. Je overrid onConfigurationChanged() et si personnalisé est défini à true, j'ai restaurer l'image.
Mon problème aujourd'hui est l'EditText devient effacé -- Comment puis-je restaurer l'EditText après modification de la configuration? Ma première tentative a été de les stocker du contenu dans une Chaîne de onPause() et ensuite de le restaurer, mais il s'agit toujours vide.
Vous devez vous connecter pour publier un commentaire.
Généralement, lorsque l'INTERFACE utilisateur de ne pas garder son état, la première chose à vérifier est que cette INTERFACE utilisateur vue a id affecté. Sans cette identité de vues ne peut pas restaurer leur état.
Si cela ne vous aide pas, vous devez sauvegarder et restaurer l'état vous-même. Jetez un oeil à La Manipulation D'Exécution Des Modifications. Il explique ce que vous devez faire:
Vous devez remplacer
onSaveInstanceState()
et enregistrer votre Acitivité de l'état lors de son nom:Et ensuite restaurer l'état dans
onCreate()
ouonRestoreInstanceState()
:Si ce n'est toujours pas suffisant, vous pouvez remplacer
onRetainNonConfigurationInstance()
et le retour de tout Objet personnalisé qui sera passé à une nouvelle activité de l'objet, lors de son recréé. Plus de détails sur la façon d'utiliser il peut être trouvé dans La Manipulation D'Exécution Des Modifications. Mais cette fonction est désapprouvée dans Android 3.0+ (spécifiquement pour lesFragmentActivity
où son final). Donc, ce ne peut pas être utilisé avec des Fragments (qui est très bien, ils ont leur mécanisme de conserver les objets à travers les modifications de la configuration).Et la dernière - ne jamais utiliser de
android:configChanges
. Vous devez avoir de très bonnes raisons de l'utiliser, et ce sont en général des raisons de performances. Il n'était pas destiné à être abusé de la manière qu'il est maintenant: juste pour prévenir de l'INTERFACE utilisateur de l'état de réinitialisation. Si cet attribut est utilisé, alors oui, l'Activité de l'INTERFACE utilisateur, ne sera pas mis sur la config de changement, mais l'Activité de l'etat sera réinitialisée lorsque détruit et recréé plus tard.La documentation explique cette option plutôt bien:
onSaveInstanceState()
fonction. Si l'image est dans le mémoire, vous pouvez utiliseronRetainNonConfigurationInstance()
.Vous pouvez forcer votre activité à ne pas recharger après l'orientation modifiés par l'ajout de
android:configChanges="orientation"
à votre activité en ligne dans le manifeste.android:screenOrientation="portrait"
android:configChanges
est considéré comme dernier recours et ne devrait normalement jamais être utilisé. developer.android.com/guide/topics/resources/...