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);
}
}
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.