Partage
  • Partager sur Facebook
  • Partager sur Twitter

Actualisation?

Sujet résolu
    18 février 2012 à 17:18:14

    Bonjour,

    Pour ma future application Android, j'ai besoin d'afficher une liste de phrases avec une phrase de plus chaque jour. A la première ouverture sur mon htc wildfire S, tout va bien, une seule phrase est affichée. Seulement, si je reprends l'application le lendemain ou que je change la date du téléphone, une seule phrase est encore affichée. Je réouvre l'application et là, les deux phrases y sont. Quelqu'un pourrait-il m'expliquer pourquoi je n'ai pas directement deux phrases?

    Merci d'avance

    package com.android.oneeveryday;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Calendar;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class OneeverydayActivity extends Activity {
        /** Called when the activity is first created. */
        @Override 
        
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //variables
            String FILENAME = "counter";//nom fichier
            String FILENAMEB = "log";//nom fichier
            String string = "0";//contenu fichier
            int counter = 0;
            int logdate = 0;
            String chaine = "";
            String chaineb = "";
            Calendar rightNow = Calendar.getInstance();
            String stringb = "" + rightNow.get(Calendar.DAY_OF_YEAR);//contenu fichier
            String chainec = "" + rightNow.get(Calendar.DAY_OF_YEAR);
            int date = Integer.valueOf(chainec).intValue();
            logdate = date;
            String output = "";//chaine affichée à la fin
    		FileInputStream fis;
    		FileInputStream fisb;
    		byte[] buffer = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    		byte[] bufferb = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    		int byteOffset = 0;//on commence à écrire dans le buffer à l'indice 0
    		int byteCount = 10;//nombre maximal de bytes à écrire dans le buffer
    		//----------------------
    		try {//on essaye de lire le fichier
    					fis = openFileInput(FILENAME);
    					fis.read (buffer, byteOffset, byteCount);
    			        fis.close();
    			        
    			        fisb = openFileInput(FILENAMEB);
    					fisb.read (bufferb, byteOffset, byteCount);
    			        fisb.close();
    		} catch (FileNotFoundException e) {//si le fichier n'est pas trouvé, il faut le créer puis réessayer
    					FileOutputStream fos;
    					FileOutputStream fosb;
    					try {//on essaye de créer le fichier
    						fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
    						fos.write(string.getBytes());
    				        fos.close();
    				        
    				        fosb = openFileOutput(FILENAMEB, Context.MODE_PRIVATE);
    						fosb.write(stringb.getBytes());
    				        fosb.close();
    					} catch (FileNotFoundException e1) {} catch (IOException e1) {}//exceptions
    					
    					try {//puis on réessaye de le lire
    						fis = openFileInput(FILENAME);
    						fis.read (buffer, byteOffset, byteCount);
    						fis.close();
    						
    						fisb = openFileInput(FILENAMEB);
    						fisb.read (bufferb, byteOffset, byteCount);
    						fisb.close();
    					} catch (FileNotFoundException e1) {} catch (IOException e1) {}
    		} catch (IOException e) {}
    		for(int i = 0; i < 10; i++){chaine += (char) buffer[i];}//on convertit les bytes en char et on les écrit dans la variable chaine
    		for(int j = 0; j < 10; j++){chaineb += (char) bufferb[j];}//on convertit les bytes en char et on les écrit dans la variable chaine
    		
    		chaine = chaine.trim();//on enlève les espaces avant la conversion
    		chaineb = chaineb.trim();//on enlève les espaces avant la conversion
    		
    		
    		
    		
    		
    		counter = Integer.valueOf(chaine).intValue() + 1;//on convertit en int puis on ajoute 1
    		int x = counter;
    		chaine = "" + x;
    		logdate = Integer.valueOf(chaineb).intValue();//on convertit en int
    		
    		
    		if(date != logdate){
    		//on écrit le nombre pour la prochaine fois
    			FileOutputStream fos2;
    			try {//on essaye de créer le fichier
    				fos2 = openFileOutput(FILENAME, Context.MODE_PRIVATE);
    				fos2.write(chaine.getBytes());
    		        fos2.close();
    			} catch (FileNotFoundException e1) {} catch (IOException e1) {}//exceptions
    		//------------------------------------------
    		//
    			FileOutputStream fos3;
    			try {//on essaye de créer le fichier
    				fos3 = openFileOutput(FILENAMEB, Context.MODE_PRIVATE);
    				fos3.write(chainec.getBytes());
    		        fos3.close();
    			} catch (FileNotFoundException e1) {} catch (IOException e1) {}//exceptions
    		//------------------------------------------
    		}
    		
    		String[] phrase = {		
    				"phrase1",
    				"phrase2",
    				"phrase3",
    				"phrase4",
    				"phrase5",
    				"phrase5",
    				"phrase7",
    				"phrase8",
    				"phrase9",
    				"phrase10"};
    		
    		for(int k = 0;k < counter; k++){
    		output += phrase[k] + " ";}
    	
    		
    		
    		TextView tv = new TextView(this);
    		tv.setText(output + " counter = " + counter + ", log = " + logdate);
    		
            setContentView(tv);
        }
    }
    
    • Partager sur Facebook
    • Partager sur Twitter

    Actualisation?

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown