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 :

Problème enregistrement EditText


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut Problème enregistrement EditText
    Bonjour,

    J'essaye d'enregistrer un EditText sur ma tablette, et ayant suivis un tutoriel assez précis sur le sujet, je pensais que cela allais fonctionner. Cependant, aucun fichier .txt ne s'enregistre à la suite de l'appui sur le bouton "enregistrer".

    Voici le code de l'Activity concerné :

    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
    public class NoteActivity extends Activity{
     
    	    /** Called when the activity is first created. */
    	    @Override
    	    public void onCreate(Bundle savedInstanceState) {
    	    	super.onCreate(savedInstanceState);
     
    	    	//on lui associe le layout affichagequestionactivity.xml
    	    	setContentView(R.layout.activity_note);
     
    	    	final EditText text = (EditText) findViewById(R.id.texte_note);
                Button valider = (Button) findViewById(R.id.save);
     
     
     
                valider.setOnClickListener(new OnClickListener() {                
                       public void onClick(View v) {                        
     
                              ecrireFichier("monFichier.txt", text.getText().toString());
     
                       }
     
                });
     
                Button vider = (Button) findViewById(R.id.vide);
     
                vider.setOnClickListener(new OnClickListener() {                  
     
                       public void onClick(View v) {                        
     
                              text.setText("");
     
                       }
     
                });
     
     
     
    	    }
     
    	    public void ecrireFichier(String nomFichier,String monText) {
     
                BufferedWriter writer = null;
     
                try {
                       File dir = getDir("ToutMesFichiers",MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE);
                       File newfile = new File(dir.getAbsolutePath() + File.separator + nomFichier);
                       newfile.createNewFile();
                       writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newfile)));
                       writer.write(monText);
                } catch (Exception e) {
     
                       e.printStackTrace();
     
                } finally {
     
                       if (writer != null) {
                              try {
                                     writer.close();
                              } catch (IOException e) {
                                     e.printStackTrace();
                              }
                       }
     
                }
          }
    }
    Je pense que le problème viens du fait que le répertoire d'enregistrement n'existe pas sur la tablette, d'ailleurs le répertoire de mon application ne semble pas exister (com.android.example.hfzd, mon appli s'appelant hfzd.apk).

    Pouvez-vous m'aider ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Il faudrait que tu nous postes ton exception (voir vue LogCat sur Eclipse).


    http://nbenbourahla.developpez.com/t...s-application/
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  3. #3
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Bonjour,

    Niveau erreurs j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    03-04 13:16:43.721: E/SpannableStringBuilder(628): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
    03-04 13:16:43.721: E/SpannableStringBuilder(628): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
    Mais cela me semble pas être la bonne erreur à vous montrer.

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Non ce n'est pas la bonne erreur à nous montrer.
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  5. #5
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Désoler j'ai vraiment du mal avec le logcat :

    J'ai observé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    03-04 14:09:02.274: E/VoldConnector(160): NDC Command {3 volume mount /mnt/sdcard} took too long (18934ms)
    03-04 14:09:58.867: E/PowerManagerService(160): Excessive delay setting brightness: 123ms, mask=2
    03-04 14:10:00.064: E/ThrottleService(160): problem during onPollAlarm: java.lang.IllegalStateException: problem parsing stats: java.io.FileNotFoundException: /proc/net/xt_qtaguid/iface_stat_all: open failed: ENOENT (No such file or directory)
    03-04 14:10:00.214: E/PowerManagerService(160): Excessive delay setting brightness: 219ms, mask=2
    03-04 14:10:00.424: E/PowerManagerService(160): Excessive delay setting brightness: 119ms, mask=2
    03-04 14:10:01.334: E/Trace(565): error opening trace file: No such file or directory (2)
    03-04 14:10:01.554: E/Trace(573): error opening trace file: No such file or directory (2)
    03-04 14:10:04.024: E/Trace(594): error opening trace file: No such file or directory (2)
    03-04 14:10:07.714: E/Trace(609): error opening trace file: No such file or directory (2)
    J'espere que ce sont les bonnes erreurs ?

  6. #6
    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,

    Change tes logs dans tes exceptions

    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
    } catch (Exception e) {
     
                       Log.e("TONTAG",e.getMessage());
     
                } finally {
     
                       if (writer != null) {
                              try {
                                     writer.close();
                              } catch (IOException e) {
                                      Log.e("TONTAG",e.getMessage());
                              }
                       }
     
                }
    le getDir te créer ton dossier si nécessaire donc pas de souci à se niveau là

    , d'ailleurs le répertoire de mon application ne semble pas exister (com.android.example.hfzd, mon appli s'appelant hfzd.apk).
    Si c'était le cas ton application se lancerait pas.

    Relance ton application et reposte nous ton logcat , normalement tu devrais avoir une erreur avec justement le tag "TONTAG" apparaître
    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.

  7. #7
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Ok merci j'ai bien compris du coup, voila ce que j'obtient (Pas d'erreur avec TONTAG :/) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    03-04 14:51:28.243: E/ThrottleService(154): problem during onPollAlarm: java.lang.IllegalStateException: problem parsing stats: java.io.FileNotFoundException: /proc/net/xt_qtaguid/iface_stat_all: open failed: ENOENT (No such file or directory)
    03-04 14:52:13.742: E/ActivityThread(229): Failed to find provider info for com.android.inputmethod.latin.dictionarypack
    03-04 14:52:13.752: E/BinaryDictionaryGetter(229): Could not find a dictionary pack
    L'erreur viendrait-elle d'ailleurs ?
    Le fait de tester sur l'emulateur change peut-etre quelque chose ?

    Merci encore, vous êtes au top sur ce forum

  8. #8
    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
    Trois choses...

    l'appel à createNewFile() ne sert à rien... il permet de "créer un fichier de manière atomique entre plusieurs threads"... Le FileOutputStream créera déjà le fichier.

    La construction de "newfile" n'est pas bonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File dir = getDir("ToutMesFichiers",MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE);
    dir.mkdirs(); // <= obligatoire au cas ou !
    File newfile = new File(dir,nomFichier); // et oui ça suffit.
    N'en déplaise à Feanorin , le log n'est pas encore tout à fait "juste", il devrait ressembler à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    } catch (Exception e) {
        Log.e("NoteActivity","Failed to write file",e);
    } finally {
        if (writer != null) {
            try {
                 writer.close();
            } catch (IOException e) {
                 Log.e("NoteActivity","Failed to gracefully close output stream",e);
            }
        }
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  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
    Pour le problème...

    J'ai un doute... comment sais tu que cela ne marche pas ?
    Parceque le répertoire est privé à l'application, et personne n'y a accès (à part le DDMS éventuellement).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #10
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Voila ce que j'obtient avec les remarques de nicroman :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    03-04 15:28:32.368: E/SpannableStringBuilder(618): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
    03-04 15:28:32.368: E/SpannableStringBuilder(618): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
    03-04 15:28:35.348: E/ActivityThread(230): Failed to find provider info for com.android.inputmethod.latin.dictionarypack
    03-04 15:28:35.358: E/BinaryDictionaryGetter(230): Could not find a dictionary pack
    Sinon au niveau du répertoire privé je pensais m'en être occupé en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File dir = getDir("ToutMesFichiers",MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE);

  11. #11
    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
    getDir() renvoit toujours quelque chose de privé:
    http://developer.android.com/referen...g.String, int)
    Note that files created through a File object will only be accessible by your own application; you can only set the mode of the entire directory, not of individual files.
    Donc je réitère ma question ... comment sais-tu que le fichier n'est pas créé ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  12. #12
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Ok pour le getDir. Pour le fichier, parce que une recherche sur ma tablette ne trouve ni le fichier, ni le répertoire de l'application.

    Edit : Cela dit, si le dossier ou fichier est invisible par le getDir, je ne peu en effet pas le savoir ...

  13. #13
    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 meilleur moyen est d'essayer de le relire dans le programme....
    Sinon, le DDMS est capable de "browser" les fichiers de l'application (directement depuis eclipse donc).

    Sinon, il existe des tas d'autres répertoires "visibles" par l'utilisateur de la tablette: getExternalFilesDir() par exemple.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  14. #14
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    très bien je vais essayer avec GetExternalFilesDir() alors et je vous tiens au courant.

    Edit : cela ne fonctionne pas plus je test avec un bouton lire la note afin de voir si elle est bien sauvegardée.

  15. #15
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Avec un bouton pour lire la note j'obtient une note que j'avais sauvegardé ce matin ou hier, mais pas la dernière rentrée et sauvegardée. Je ne comprend plus rien ...

    Le lien du tuto dont je me suis aidé :

    http://www.mobile-tuts.com/google-an...-carte-sd.html

  16. #16
    Membre régulier
    Homme Profil pro
    Software Engineer
    Inscrit en
    Février 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 139
    Points : 94
    Points
    94
    Par défaut
    Ok, gros rebondissement ! J'ai essayé mon appli sur mon galaxy S et celle-ci fonctionne très bien, le fichier s'enregistre sur la carte SD après avoir mis l'autorisation dans le manifest, il y a également le dossier de mon application qui est lisible, enfin bref tout ce que je ne trouve pas sur la tablette ...

    Une idée du problème du coup ? Sachant que la tablette n'a pas de carte SD, je trouve cela bizarre que l'enregistrement puisse se faire sur une carte SD et pas sur la mémoire de la tablette...

    Edit :

    En fait je vois d'où cela vient :

    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 void ecrireFichier(String nomFichier,String monText) {
     
                BufferedWriter writer = null;
     
                try {
                		File dir = getExternalFilesDir("ToutMesFichiers");
                		dir.mkdirs();
                		File newfile = new File(dir,nomFichier);
                		writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newfile)));
                		writer.write(monText);
                } catch (Exception e) {
                    Log.e("NoteActivity","Failed to write file",e);
                } finally {
                    if (writer != null) {
                        try {
                             writer.close();
                        } catch (IOException e) {
                             Log.e("NoteActivity","Failed to gracefully close output stream",e);
                        }
                    }
                }
    	    }
    L'enregistrement viens du getExternalFilesDir(), quelle fonction permet la même chose sur le stockage interne svp ? sachant que getDir() n'est apparemment pas bon pour ce que je veux faire.

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/07/2007, 12h51
  2. [Problème] Enregistrement des caractères "é" etc.
    Par devoc dans le forum Administration
    Réponses: 4
    Dernier message: 18/04/2007, 19h08
  3. [VBA] Problème enregistrement mise en forme fichier word
    Par guenfood dans le forum VBA Word
    Réponses: 1
    Dernier message: 07/06/2006, 14h10
  4. [VB6] Problème enregistrement playlist wmp
    Par splouf dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 11/04/2006, 14h26
  5. [W3C] Type MIME, problème "enregistrer sous"
    Par spikelille dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/01/2006, 17h13

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