10
votes

Perte d'orientations de commutation de variables

im nouveau à Android. J'ai écrit quelques programmes et j'ai essayé sur mon téléphone. Lorsque je change d'orientations, c'est comme mon téléphone redémarre le programme. Toutes mes variables sont réinitialisées. En fait, la seule chose qui ne réinitialisait pas est le texte qui est dans la vue Editer le texte. Qu'est-ce qui cause cela? Comment puis-je l'arrêter? J'ai essayé de le chercher sur Google et sur le débordement de la pile, mais tout ce que je vois, c'est comment l'orientation de la vue de la modification de tous ensemble. J'ai même essayé, dans un programme, pour définir mes variables avec la méthode Obtenir du texte, mais cela ne fonctionne pas.


1 commentaires

5 Réponses :


2
votes

Ceci est par conception, Oncreate sera appelé lorsque l'orientation est modifiée. Si cela n'est pas souhaité, vous pouvez la définir de ne pas répondre aux modifications d'orientation dans androidmanifest.xml , votre activité ne sera pas recréée, réglage android: SCRIPLOrientation = "Portrait" Android: configchange = "Orientation | KeyboardHidden" pour votre activité le limitera au mode portrait.

Pour plus d'informations sur les paramètres, voir Ce .


0 commentaires

4
votes

Assurez-vous d'implémenter OnsaveInstancestate et devez vous préparer à restaurer votre activité à partir d'un BUNDLE IN Oncreate et vous serez tous définis. Celles-ci seront appelées pendant la rotation, vous aurez donc une nouvelle activité par la suite, mais si vous avez sauvé votre état et que vous pouvez la restaurer, rien à craindre.


2 commentaires

Je veux toujours que mon programme soit réajusté de sa disposition lorsque vous passez du portrait et du paysage. Tout ce que je veux être sauvé, ce sont mes variables. Ints surtout. Est-ce que ça va marcher?


Oui, si vous mettez toutes vos variables dans ce paquet, puis dans votre méthode Oncreate extraire de l'ensemble au lieu d'initialiser votre activité à partir de zéro, vous serez tous définis.



8
votes

Lorsque je change d'orientations, c'est comme mon téléphone redémarre le programme.

Eh bien d'être précis, l'activité actuellement visible est complètement détruite et recréée. D'autres composants de votre "application" peuvent être affectés ou non.

Qu'est-ce qui cause cela? Comment puis-je l'arrêter?

C'est par conception et comme pour l'arrêter, vous pouvez ou ne pas vouloir faire cela.

Comme cela a été mentionné, il est possible de préciser que vous souhaitez gérer des modifications de «configuration» (telles que l'orientation) vous-même ou même la force uniquement (par exemple, un paysage ou un portrait).

Dans de nombreux cas, un développeur d'applications peut choisir de modifier une mise en page en fonction de la question de savoir si un périphérique est dans une orientation ou une autre. Certaines dispositions peuvent fonctionner correctement dans le portrait mais pas dans le paysage (ou vice-versa) et le but de l'approche conçue (pour détruire / recréer l'activité actuelle ) est destiné à accueillir cela.

Si un DEV choisit de ne pas gérer la configuration change de fonctionner ou de forcer une orientation spécifique, le moyen correct de gérer les choses est de vous assurer que toutes les données saisies dans les éléments UI «volatiles» (tels que Edittexts) sont correctement sauvegardés et recréés après changement d'orientation.

Pour ce faire, la compréhension du cycle de vie est essentielle, tout comme utilisez les différentes méthodes d'activité appelées tout au long du cycle de vie pour sauvegarder / Restaurer les données.

lecture essentielle ...

Modifications d'exécution

Activité Lifecycle

Fondamentaux de l'application


2 commentaires

Merci pour la bonne réponse approfondie et les termes! Fait complet depuis pourquoi. Je dois être honnête cependant. Je me perds de lire les pages du développeur et je ne comprends pas la plus grande partie de ce qu'ils disent, à moins d'avoir une bonne connaissance de base et une bonne compréhension avant la main. J'apprends mieux des exemples et des tutoriels. Et bien sûr jouer avec des méthodes.


@ Jbreezy901: Je comprends exactement ce que vous entendez sur les pages du développeur. J'étais au même endroit il y a 16 mois lorsque j'ai commencé avec Android et même maintenant, je n'ai probablement pas travaillé sur un très petit pourcentage de ce qui est là (et seulement des choses que je devais jusqu'à présent). La documentation des fondamentaux de l'application, ainsi que celle de l'activité et de son cycle de vie, vaut vraiment la peine d'être bookmarking. Heureux d'avoir pu perdre de la lumière, amusez-vous.



0
votes

mieux Ajouter Android: configchange = "KeyboardHésditéDonnée | Orientation | Screensize" à AndroidManifest.xml dans Activité


0 commentaires

0
votes

Le ViewModel La classe fournit cette fonctionnalité:

ViewModel Les objets sont automatiquement conservés lors de la configuration des modifications afin que les données qu'ils détiennent sont immédiatement disponibles pour l'activité suivante ou l'instance de fragment.

Voir Développeurs Android


0 commentaires