IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Ma variable se reinitialise lors de la rotation de l'écran


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Points : 62
    Points
    62
    Par défaut Ma variable se reinitialise lors de la rotation de l'écran
    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

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    ??? 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) ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Nouveau membre du Club Avatar de xlkiller
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2007
    Messages : 41
    Points : 35
    Points
    35
    Par défaut
    Tu as bien ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android:configChanges="orientation|screenSize"

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Points : 62
    Points
    62
    Par défaut
    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 ?

  5. #5
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Il faut la faire persister (typiquement SharedPreference dans on cas) ou bien gérer spécifiquement le cas de la rotation avec onSaveInstanceState/onRestoreInstanceState
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    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.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Points : 62
    Points
    62
    Par défaut
    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

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 128
    Points : 62
    Points
    62
    Par défaut
    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 !

  9. #9
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    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...).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #10
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    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.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/01/2009, 14h30
  2. [MySQL] Sauvegarde via variable de session lors d'un select.
    Par sdgarf dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/06/2008, 12h01
  3. mettre 1 variable ds lien lors cliq sur bouton option
    Par zorba49 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/06/2006, 14h39
  4. [VBA-E] pb variables globales reinitialisées...
    Par borisa dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/03/2006, 14h57
  5. Réponses: 3
    Dernier message: 01/12/2004, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo