Bonjour,
Tout est dis dans le titre.
J'ai un numéro de facture que j'incrémente mais dès que la rotation de l'écrant se fait il revient 0
Que faire ?
Merci pour vos réponse
Cordialement
Version imprimable
Bonjour,
Tout est dis dans le titre.
J'ai un numéro de facture que j'incrémente mais dès que la rotation de l'écrant se fait il revient 0
Que faire ?
Merci pour vos réponse
Cordialement
??? hu...
Normalement la rotation de l'écran ne va pas tripatouiller la mémoire...
A moins que ce ne soit une valeur membre de l'activité (puisque par défaut l'activité est détruite / recrée à la rotation de l'écran) et qu'elle ne soit pas sauvegardée correctement (onSaveInstanceState) ou récupérée correctement dans le onCreate....
Qu'en est-il quand on appuie sur "home" et qu'on revient dans l'application (appui long sur home, appui sur le thumbnail des applications récentes) ?
Tu as bien ca ?
Code:android:configChanges="orientation|screenSize"
alors.. Tout d'abord merci pour vos réponses.
Ma variable effectivement est une variable d'activité.. Donc lors de la rotation de l'écran, l'activité va se recharger du coup la valeur reviens à 0.
Comment je peux faire en sorte que ma variable de s'écrase jamais ?
Il faut la faire persister (typiquement SharedPreference dans on cas) ou bien gérer spécifiquement le cas de la rotation avec onSaveInstanceState/onRestoreInstanceState
Le plus simple est vraiment d'utiliser:
onSaveInstanceState/onRestoreInstanceState
ce qui, au passage, permettra de gérer l'ensemble des cas ou l'activité est détruite (il n'y a pas que l'orientation de l'écran) par le système.
ok pour la methode onSaveInstanceState/onRestoreInstanceState. Pourquoi ?
Parce que j'ai qu'une variable a garder en mémoire.
Cependant, comment je peux faire ? J'ai pas trouver de tuto satisfaisants et je ne comprends pas le principe
Bonjour,
Mon problème est résolue.
Après réflexion je l'ai fais avec des share preferences.
je vous remercie pour votre aide !
Le problème des SharedPreferences, c'est qu'elles survivent à la mort de l'application, ce qui n'est pas voulu par exemple pour une authentication, ou un état temporaire de l'application.
Pourquoi pas utiliser onSaveInstanceState() / onRestoreInstanceState() ?
Parceque:
bundle.putInt("xxxx",value);
bundle.getInt("xxxx");
C'est encore plus simple que les SharedPreferences (ou il faut ouvrir un Editor, commiter, etc...).
Bonjour,
Autre possibilité,
Sauvegardé ta variable dans l'Application, ou un Service.
Donc pour résumer
OnSaveInstance : sauveagarde dans l'activié en cours, doit passer la variable par le bundle si tu changes d'activité, attention pour les fragments c'est un peu plus chiadé.
OnShardePreference : partagé et sauvegardé à l'ensemble de l'application, les données reste même si l'application se termine
Application : sauvegarde la variable dans l'Application, partagé a l'ensemble de l'application mais se perds lorsque celle ci se termine, (A ne pas surcharger cela prends de la place).
Service : Si un Service tourne en tache de fond, on peut l'utiliser pour sauvegarder des variables seules les activité se liant a se service auront accès à celles ci. C'est un peu crade, mais si les variables ont un rapport avec le service c'est utile.
SDCard : Attention tout le monde peut y avoir accès
DB : pour les grosses quantité de données ;).
Serveur : sauvegarde les données sur une place externe.