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 :

Garder une variable en mémoire


Sujet :

Android

  1. #1
    Membre confirmé
    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
    Par défaut Garder une variable en mémoire
    Bonjour,

    Je souhaiterais garder une variable en memoire.
    J'ai deux classes. Une classe appelée Ip.java qui récupère une adresse IP et l'autre nommée Connexion.java qui permet de se servir de cette variable (ip).
    Cette variable Ip permet de définir à mon device quel est le serveur qu'il doit écouter.

    Bon aujourd'hui quand l'utilisateur rentre l'adresse IP elle est gardée en mémoire temps que l'application ne se ferme pas (killer le process) et je souhaiterais y remédier.

    J'ai vu que l'on pouvait mettre cette variable dans la mémoire du telephone
    http://developer.android.com/guide/t...rage.html#pref

    Mais j'ai un problème ou mettre ces deux bou de code ? dans quelle classe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      // Restore preferences
           SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
           boolean silent = settings.getBoolean("silentMode", false);
           setSilent(silent);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        @Override
        protected void onStop(){
           super.onStop();
     
          // We need an Editor object to make preference changes.
          // All objects are from android.context.Context
          SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
          SharedPreferences.Editor editor = settings.edit();
          editor.putBoolean("silentMode", mSilentMode);
     
          // Commit the edits!
          editor.commit();
        }
    Donc j'ai fais des tests. Voici mes deux classes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    public class Ip extends Activity {
     
    	private static String ip;
    	public static final String PREFS_NAME = "MyPrefsFile";
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_ip);
     
    		Button paramButton = (Button) findViewById(R.id.validate);
    		paramButton.setOnClickListener(new OnClickListener() {
     
    			@Override
    			public void onClick(View v) {
    				EditText tonEdit = (EditText)findViewById(R.id.Ip);
    				ip = tonEdit.getText().toString();
     
    				if (ip.equals("")){
    					Toast.makeText(Ip.this,
    							R.string.erreur6,
    							Toast.LENGTH_SHORT).show();
    					return;
    				}
     
    				else {
     
    					 // Restore preferences
    				       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    				       String silent = settings.getString("ip", ip);
    				       setSilent(silent);
     
    					Intent intent = new Intent(Ip.this,
    						Parametres.class);
    					// on appelle notre activité
    					startActivity(intent);
    				}
    			}
    		});
     
    		Button returnButton = (Button) findViewById(R.id.retour);
    		returnButton.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				finish();
    			}
    		});
     
    	}
     
    	@Override
        protected void onStop(){
           super.onStop();
     
          // We need an Editor object to make preference changes.
          // All objects are from android.context.Context
          SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
          SharedPreferences.Editor editor = settings.edit();
          editor.putString("silentMode", ip);
     
          // Commit the edits!
          editor.commit();
        }
     
    	public static String getIp(){
    		return ip;
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Connexion {
    	public static String strUrl(){
    		return "http://"+Ip.getIp()+"/Applications/";
    	}
    }
    De plus j'ai une erreur sur Eclipse ne le reconnait pas.

    Alors j'espère avoir été clair et j'espère que vous pourrez m'aider.

    Cordialement

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Par défaut
    Le "setSilent(silent)" est juste un exemple de Google (suppose que dans sa classe, il y a une méthode setSilent...), il n'a rien à voir avec les prefs (donc en gros, tu l'enlève et tu l'oublie).


    Pour ce qui est de "où est-ce que je met le code", et bien tout simplement où tu en as besoin (ça peut être dans une seule classe, ou dans les deux).


    Le morceau ci-dessous, c'est pour enregistrer un String dans la mémoire, donc utilise dans la/les classes où tu doit sauvegarder ta variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
          SharedPreferences.Editor editor = settings.edit();
          editor.putBoolean("silentMode", mSilentMode);
     
          // Commit the edits!
          editor.commit();


    Et ce morceau là, c'est pour récupérer une valeur : utilise le donc dans ta/tes classes où tu dois retrouver l'adresse IP enregistrée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
           boolean silent = settings.getBoolean("silentMode", false);

  3. #3
    Membre confirmé
    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
    Par défaut
    Ok merci.
    Cependant dans mon cas, je dois Mettre zen mémoire mon IP dans une activité android et récupérer cet IP dans une classe java tout court.

    Et le getSharePreferences ne fonctionne pas.

    Merci d'avance !

  4. #4
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Je pense que tu te mélanges les pinceaux entre "classe" et "objet"...

    Un objet est l'instance d'une classe en mémoire... plusieurs objets de la même classes peuvent coexister en mémoire.

    Donc tu dois passer une addresse IP à un objet en mémoire....
    Le plus simple est donc de rajouter dans la classe une fonction "setInetAddress(InetAddress ipaddress);" qui se chargera de la stocker dans l'objet.
    (j'utilise InetAddress puisque c'est la classe dédiée aux adresses justement dans java.net)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class XXXXXX 
    {
        InetAddress    ip;
     
        public void setInetAddress(InetAddress addr)
        {
           this.ip = addr;
        }
    }

    Ensuite il faut récupérer cette adresse à un moment... Pour cela tu comptes utiliser SharedPreferences, ce qui est parfait...

    Il faut donc que la classe ci-dessus "communique" avec le système, ce qui veut dire qu'à un moment elle doit avoir un "Context", et, pour s'initialiser correctement, même l'avoir au constructeur.
    Pareillement, il nous faut un context pour modifier l'adresse, et donc, le rajouter en paramètre à setInetAddress():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    class XXXXXX 
    {
        InetAddress    ip;
     
        public XXXXXX(Context ctxt)
        {
              this.ip = loadDefaultAddress(ctxt);
        }
     
        public InetAddress getAddress()
        {
              return this.ip;
        }
     
        public void setInetAddress(InetAddress addr, Context ctxt)
        {
              this.ip = addr;
              saveDefaultAddress(ctxt,this.ip);
        }
     
        private static void saveDefaultAddress(Context ctxt, InetAddress ip)
        {
              SharedPreferences settings = ctxt.getSharedPreferences(PREFS_NAME, 0);
              SharedPreferences.Editor editor = settings.edit();
              if (ip == null)
                   editor.remove("ip");
              else
                   editor.putString("ip", ip.toString());
              editor.commit();
        }
     
        private static InetAddress loadDefaultAddress(Context ctxt)
        {
              SharedPreferences settings = ctxt.getSharedPreferences(PREFS_NAME,0);
              String inetStr = settings.getString("ip");
              return (inetStr == null) ? null : InetAddress.getByName(inetStr);
        }
    }

  5. #5
    Membre confirmé
    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
    Par défaut
    Bonjour,

    Même je ne comprends toujours pas. Excusez ma non compréhension.

    Mon application doit prendre en paramètre l'Ip d'un serveur, et c'est l'administrateur qui doit faire cela (la rentrer dans l'editText).

    J'ai une activité Ip.java qui permet de récupérer l'adresse Ip entrée par l'admin.
    Et j'ai une classe Connexion.java qui va récupérer l'adresse de Ip.java et s'en servir dans une méthode.
    Cette méthode me permet d'établir la connexion entre mon device et mon serveur elle est donc utilisée dans chaque script ou le besoin de se connecter se fais ressentir.

    Donc, dans mon activité Ip.java je veux mettre l'adresse Ip dans la mémoire du téléphone (afin qu'il n'y ai plus besoin de la reprogrammer à chaque lancement) et dans ma classe Connexion.java récupérer cette adresse qui est dans la mémoire du téléphone.

    Je ne peux donc pas mettre les deux bou de code dans la même classe.

    De plus pour faire cela je suis obliger de mettre certaines méthodes en static donc le context ne marche pas toujours.

    Je suis désolé mais la je pige pas grand chose pour le coup.
    J'ai compris le principe du sharePreferences mais je vois pas comment je peux le mettre en application dans mon cas.

    J’espère que je suis clair. Mes deux classes sont dans le premiers post.

    Merci beaucoup de votre aide

  6. #6
    Expert confirmé

    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
    Par défaut
    Je ne peux donc pas mettre les deux bou de code dans la même classe.
    Pourquoi ??

    De plus pour faire cela je suis obliger de mettre certaines méthodes en static donc le context ne marche pas toujours.
    En quoi tu as besoin de méthode statique ?

    J'ai compris le principe du sharePreferences mais je vois pas comment je peux le mettre en application dans mon cas.
    Qu'est ce que tu as compris du principe de sharePreferences ?

    En gros ce que t'ont proposé nicroman et gilloddon c'est de pouvoir stocké ton adresse Ip dans les préférences de ton application. Ces préférences seront accessible à tout moment et sont des données persistantes.

    Après à toi de savoir quand tu dois y accéder en fonction du niveau (droit) de l'utilisateur.

    De plus tu parles d'utilisateurs dans ton premier post qui rentres l'Ip puis après d'un administrateur, c'est pas évident à suivre :s

  7. #7
    Membre confirmé
    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
    Par défaut
    merci de vos réponses.

    J'ai une classe connexion.java (qui est une simple classe pas une activité) qui permet de récupérer l'adresse IP entrer par l'administrateur dans le menu option de mon application (ce coup ci c'est l'activité Ip.java).

    Donc quand je fais un accesseur dans mon activité IP.java (cette classe sert à récupérer l'adresse IP) pour m'en servir dans la classe connexion.java il faut que cette méthode soit en static ainsi que la méthode dans ma classe Connexion (elle doit être aussi en static).

    Et quand je veux mettre les shares preferences, il n'accepte pas les static.
    Connexion.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Connexion {
    	public static String strUrl(){
    		return "http://"+Ip.getIp()+":8080/Applications/";
    	}
    }
    Ip.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static String getIp(){
    		return ip;
    	}
    Je ne sais pas si je suis très clair :/ Ca me parait simple dans ma tête lol

  8. #8
    Membre confirmé
    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
    Par défaut
    Typiquement quand j'envoie ces deux bout de codes ca ne compile pas....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    private String ip;
    	private String PREFS_NAME = "MyPrefsFile";
     
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    	    SharedPreferences.Editor editor = settings.edit();
    	    editor.putString("ip", getIp());
     
    	    // Commit the edits!
    	    editor.commit();
     
    	}
     
    	public String getIp(){
    		return ip;
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Connexion {
     
    	private String PREFS_NAME = "MyPrefsFile";
     
    	public String strUrl(){
    		SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    	       String silent = settings.getString("ipo", ip);
     
    		return "http://"+silent+":8080/Applications/";
    	}
    Je comprends vraiment pas...

    Merci d'avance pour votre aide.

  9. #9
    Expert confirmé

    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
    Par défaut
    Bonjour,

    Et quand je veux mettre les shares preferences, il n'accepte pas les static.
    Shared Preferences attends une String, que la fonction appelé soit une statique ou pas n'a aucun rapport.

    C'est quoi ton erreur ?

  10. #10
    Membre confirmé
    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
    Par défaut
    voici mes erreurs dans la classe connexion.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The method getSharedPreferences(String, int) is undefined for the type Connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ip cannot be resolved to a variable
    Il ne veut pas accepter la methode get SharedPreferences.
    J'ai fais ce import la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import android.content.SharedPreferences;
    De plus ma variable ip est normalement celle que je récupere dans mon activité IP. Et ça veut pas non plus. Il voudrais que je rdeclare une variable ip qui n'aura aucune valeur. Or ma variable ip je récupère sa valeur dans ma classe Ip.java

    En réalité ce que j'ai vraiment du mal à saisir c'est comment récupérer ma variable ip (qui est dans Ip.java), la passé dans les shared preferences et RÉCUPÉRER cette valeur dans ma classe Connexion.java.

    Merci beaucoup pour ton aide

  11. #11
    Membre Expert
    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
    Par défaut
    The method getSharedPreferences(String, int) is undefined for the type Connexion
    Tu vois bien que ta classe connexion de possède pas de méthode getSharedPreferences() donc l'invocation échoue. Cette méthode est portée par la classe android.content.Context. Donc à toi d'amener une instance de Contexte jusqu'à ta classe connexion pour y invoquer la fameuse méthode

    ip cannot be resolved to a variable
    Moi non plus je ne vois pas d'où vient ip dans ta classe. Ce n'est ni un champs, ni un paramètre de strUrl().
    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

  12. #12
    Membre confirmé
    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
    Par défaut
    Re bonjour,

    Voici ce que j'ai rajouter.

    dans Ip.java une methode qui permet d'enregistrer ma variable ip au paramètres du téléphone.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     private static void saveDefaultAddress(Context ctxt, String ip)
    	    {
    	          SharedPreferences settings = ctxt.getSharedPreferences(PREFS_NAME, 0);
    	          SharedPreferences.Editor editor = settings.edit();
    	          if (ip == null)
    	               editor.remove("ip");
    	          else
    	               editor.putString("ip", ip.toString());
    	          editor.commit();
    	    }
    et dans connexion.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    package com.example.softwaredatabase;
     
    import android.content.Context;
    import android.content.SharedPreferences;
     
     
    public class Connexion {
     
    	private static String PREFS_NAME = "MyPrefsFile";
    	private static String silent;
     
    	public static String strUrl(){       
    		return "http://"+Connexion.loadDefaultAddress(null)+":8080/Applications/";
    		//return "http://192.168.1.55:8080/Applications/";
    	}
     
     
    	 private static String loadDefaultAddress(Context ctxt)
    	    {
    	          SharedPreferences settings = ctxt.getSharedPreferences(PREFS_NAME,0);
    	          silent = settings.getString("ip",Ip.getIp());
    	          return silent;
    	    }
     
    }
    Que mettre dans le contexte quand j'utilise la methode loadDefaultAddress() ?

    Je vous remercie vraiment pour toute l'aide apportée

  13. #13
    Expert confirmé

    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
    Par défaut
    Que mettre dans le contexte quand j'utilise la methode loadDefaultAddress() ?
    Ben le Context de l'appelant, Service, Activity, ou tu peux faire avec le Context de l'application.

  14. #14
    Membre confirmé
    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
    Par défaut
    Bon j'ai rajouter des choses. Cependant il ne récupère pas les informations. Je suis vraiment désolé de vous prendre de votre temps.

    Voici prefs.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        android:title="Préférences" >
     
        <PreferenceCategory android:title="Ip Preferences" >
            <EditTextPreference
                android:key="Ip"
                android:title="Ip" >
            </EditTextPreference>
     
           <!-- <ListPreference
                android:key="list"
                android:summary="List summary"
                android:title="List"
                android:entries="@array/prefentries" 
                android:entryValues="@array/prefvalues">
            </ListPreference> --> 
        </PreferenceCategory>
     
    </PreferenceScreen>
    J'utilise un autre fichier xml pour récuperer l'ip et cet ip je veux l'enregistrer (grâce à editor) dans mes préférences. (c'est donc ma classe Ip.java)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    EditText tonEdit = (EditText)findViewById(R.id.Ip);
    				ip = tonEdit.getText().toString();
     
    				Editor editor = pref.edit();
    				editor.putString("Ip", ip);
    				editor.commit();
     
     
     
    				if (ip.equals("")){
    					Toast.makeText(Ip.this,
    							R.string.erreur6,
    							Toast.LENGTH_SHORT).show();
    					return;
    				}
     
    				else {
    					Intent intent = new Intent(Ip.this,
    						Parametres.class);
    					// on appelle notre activité
    					startActivity(intent);
    				}
    Et je récupère donc ma valeur qui a été enregistrer dans mes préférences (ma classe Connexion.java) grâce à ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public class Connexion extends Activity{
     
     
    	static String value;
     
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		//setContentView(R.layout.activity_preferences);
    		//addPreferencesFromResource(R.xml.prefs);
     
    		SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
    		value = pref.getString("Id", "Id");
     
     
     
    	}
     
    	public static String strUrl(){
    		//return "http://192.168.1.55:8080/Applications/";
    		return "http://"+value+":8080/Applications/";
    	}	
    }
    Or lorsque je fais mes tests ma variable ip qui est dans les préférences n'est pas prise en compte. Alors après vérif, ma variable est bien enregistrée dans les préférences. Il s'avère donc que elle est male récupérée dans ma classe connexion.

    Comment faire pour la récupérer dans ma classe connexion ? es par apport au contexte ? je récupère mal mon fichier prefs.xml ?

    J'espère sincérement que vous pourrez m'aider et vous remercie encore pour tout l'aide apportée.

  15. #15
    Membre confirmé
    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
    Par défaut
    J'avance doucement. J'ai un problème dans ma classe connexion.java. Je n'arrive pas à récuperer ma valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    import android.app.Activity;
    import android.content.SharedPreferences;
    import android.preference.PreferenceActivity;
    import android.preference.PreferenceManager;
    import android.widget.Toast;
     
     
    public class Connexion extends Activity{
     
     
    	String value;
     
    	public Connexion(){
    		this.value = null;
    	}
     
    	private String getValue(){
    		SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    		value = pref.getString("Id", "default");
    		return value;
    	}
     
     
    	public String strUrl(){
    		return "http://"+getValue()+":8080/Applications/";
    	}
    Je vous la mets en esperant que vous comprendrez pk cela ne ma marche pas.

    Coridalement,

  16. #16
    Expert confirmé

    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
    Par défaut
    Ip != Id

  17. #17
    Membre confirmé
    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
    Par défaut
    Ok erreur à la con. Merci beaucoup Feanorin
    Cependant cela ne marche toujours pas.

    Quand je veux récupérer les préférences dans ma classe connexion.java cela ne marche pas.

    Faut-il extends Activity ? PreferenceActivity ? Ou autres ?

    Etant donné que ma classe connexion n'est pas une activité à proprement parler mais plus un intermédiaire es ce que cela fonctionne ? Peut-on quand même récupérer les valeurs qu'il y a dans mes préférences ?

    Et enfin dernière question es ce que quand j'utilise un gestionnaire des taches et que je kill mon application, que je la redémarre, es ce que je doit retrouver malgré tout mes préférences ?

    je vous communique mon code je ne comprends pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    import android.app.Activity;
    import android.content.SharedPreferences;
    import android.preference.PreferenceManager;
     
     
    public class Connexion extends Activity{
     
     
    	String value;
     
     
     
    	public Connexion(){
    		this.value = null;
    	}
     
     
    	public String strUrl(){
    		SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
     
    		value = pref.getString("Ip", "default");
    		return "http://"+value+":8080/Applications/";
    	}
     
     
     
    }
    Merci beaucoup beaucoup

  18. #18
    Expert confirmé

    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
    Par défaut
    Bonjour,

    Faut-il extends Activity ? PreferenceActivity ? Ou autres ?
    Rien.

    Etant donné que ma classe connexion n'est pas une activité à proprement parler mais plus un intermédiaire es ce que cela fonctionne ? Peut-on quand même récupérer les valeurs qu'il y a dans mes préférences ?
    Ca fonctionne pareil. tu n'as besoin que d'un Context.

    Et enfin dernière question es ce que quand j'utilise un gestionnaire des taches et que je kill mon application, que je la redémarre, es ce que je doit retrouver malgré tout mes préférences ?
    oui c'est le but des préférences.

    Qu'es ce que tu récupères dans value, as tu un erreur ????

  19. #19
    Membre confirmé
    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
    Par défaut
    Alors pour le extends. Quand je ne mets rien je ne vois pas comment récupérer un contexte. Et donc ma shared preferences ne compile pas. Quand je mets extends Actitivy cela fonctionne.

    Alors comment importer un contexte ? et surtout quel contexte prendre ?

    Deuxièmement pour ma variable value. Etant donnée que je me serts de l'addresse IP pour (donc ma variable value) pour me pfaire une connexion login/mdp tout simplement cela ne se connecte pas. Pas d'erreur rien (quand je la mets en dur cela fonctionne).

    J'ai quoi dans ma variable value ? Je ne sais pas. Quand je tente un afichage SoP dans ma console j'ai rien du tout qui s'affiche et quand je fais un Log.i("Value=:",value); j'ai rien dans le log non plus.

    Merci beaucou de ton aide

  20. #20
    Expert confirmé

    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
    Par défaut
    Quand je ne mets rien je ne vois pas comment récupérer un contexte
    En lui passant en paramètre on revient sur la discussion du début de nicroman
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class XXXXXX 
    {
        InetAddress    ip;
     
        public XXXXXX(Context ctxt)
        {
              this.ip = loadDefaultAddress(ctxt);
        }
     
        public InetAddress getAddress()
        {
              return this.ip;
        }
    et surtout quel contexte prendre ?
    n'importe lequel, tant qu'il appartient à l'application.

    J'ai quoi dans ma variable value ? Je ne sais pas.


    Mets toi en débogue et regarde le comportement de l'application, si tu y passes tu dois avoir forcément le log qui s'affiche.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Garder une variable en mémoire
    Par n2engineer5 dans le forum Android
    Réponses: 3
    Dernier message: 26/04/2011, 16h35
  2. [Makefile] Garder une variable en mémoire entre 2 make
    Par Gui13 dans le forum Systèmes de compilation
    Réponses: 1
    Dernier message: 12/01/2009, 14h30
  3. garder une variable en mémoire
    Par rachou59650 dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2008, 09h38
  4. Garder une variable en mémoire
    Par 123quatre dans le forum Langage
    Réponses: 3
    Dernier message: 10/07/2007, 19h01
  5. Comment garder une variable en mémoire...
    Par sam01 dans le forum Langage
    Réponses: 17
    Dernier message: 24/04/2006, 13h02

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