Plantage lorsque l'application est quittée
Bonsoir,
Je débute en programmation Android avec une application simple de bloc-note. Hors je bute sur une erreur. Lorsque j'appui sur le bouton "Home" dans l'émulateur, l'application plante avec le message "The application IsiNotePad (process com.IsiTech.Android.IsiNotePad) has stopped unexpectedly. Please try again."
Voici le code de mon activité :
Code:
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| package com.IsiTech.Android.IsiNotePad;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
public class IsiNotePadActivity extends Activity {
private final static String NOTES = "notes.txt";
private TextView editor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Set the TextView
editor = (TextView) findViewById(R.id.note);
}
@Override
protected void onResume() {
super.onResume();
// Add previous text
String str = readNote();
editor.setText(str);
}
@Override
protected void onPause() {
super.onPause();
// Save the text
String str = (String) editor.getText();
writeNote(str);
}
@Override
protected void onStop() {
super.onStop();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
// Mise en place du menu
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.delete: // Delete the text
editor.setText("");
writeNote("");
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* Read the notes in the file
* @return
*/
public String readNote()
{
try {
InputStream in = openFileInput(NOTES);
if (in != null) {
InputStreamReader tmp = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(tmp);
String strRead; //For each line
StringBuilder buf = new StringBuilder();
while ((strRead = reader.readLine()) != null) {
buf.append(strRead+"\n");
}
in.close();
return buf.toString();
}
}
catch (java.io.FileNotFoundException e) {
return "";
}
catch (Throwable t) {
Toast.makeText(this, "Exception: "+t.toString(), Toast.LENGTH_LONG).show();
}
return "";
}
/**
* Write the note in the file
*/
public void writeNote(String noteToWrite)
{
try {
OutputStreamWriter out = new OutputStreamWriter(openFileOutput(NOTES, 0));
out.write(noteToWrite);
out.close();
}
catch (Throwable t) {
Toast.makeText(this, "Exception: "+t.toString(), Toast.LENGTH_LONG).show();
}
}
} |
J'ai trouvé que le problème survient dans la méthode onPause(), à la ligne
Code:
String str = (String) editor.getText();
Si je supprime cette ligne, l'application se quitte sans soucis. Je peux fournir le logcat si nécessaire. Avez vous une idée de ce qui cloche?
Merci d'avance.