EditText lässt sich nicht richtig ändern nach Dateilesung

  • Antworten:4
Gelöschter Account
  • Forum-Beiträge: 336

14.06.2014, 15:07:56 via Website

Hi Leute,

ich hab ein kleines Problem und finde den kleinen Fehler einfach nicht :D. Ich habe 2 Buttons und ein EditText. Wenn man den einen Button auslöst wird der Inhalt des EditText mit Hilfe von FileOutputStream und OutputStreamWriter gespeichert. Wenn der andere Button ausgelöst wird, wird der zuvor gespeicherte Text mit FileInputStream und InputStreamWriter ausgelesen und in das selbe EditText geschrieben. Das klappt soweit auch problemlos, aber aus irgendeinem Grund kann ich dann nicht mehr den Text löschen der in das EditText geschrieben wurde außer ich markiere alles und lösche es so, das funktioniert. Ich kann auch mitten im Wort löschen aber wenn ich versuche das Wort vom dessen letzten Buchstaben aus zu löschen funktioniert es nicht, es passiert einfach nichts. Ich hoffe man versteht was ich meine. Hier mein Code:

    public void btnLesen(View view) {
    EditText editText = (EditText) findViewById(R.id.editText);
    writeFile(editText.getText().toString());
}

public void writeFile(String text) {
    try {
        FileOutputStream fileOutputStream;
        OutputStreamWriter outputStreamWriter;

        fileOutputStream = openFileOutput("text.txt", MODE_PRIVATE);
        outputStreamWriter = new OutputStreamWriter(fileOutputStream);
        outputStreamWriter.write(text);
        outputStreamWriter.flush();
        outputStreamWriter.close();
        Toast.makeText(this, "Erfolgreich", Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        Toast.makeText(this, "Fehlgeschlagen", Toast.LENGTH_SHORT).show();
    }
}

public String readFile() {
    FileInputStream fileInputStream;
    InputStreamReader inputStreamReader;

    char[] inputBuffer = new char[255];
    String output = null;

    try {
        fileInputStream = openFileInput("text.txt");
        inputStreamReader = new InputStreamReader(fileInputStream);
        inputStreamReader.read(inputBuffer);
        output = new String(inputBuffer);
        inputStreamReader.close();
        Toast.makeText(this, "Erfolgreich", Toast.LENGTH_SHORT).show();

    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(this, "Fehlgeschlagen", Toast.LENGTH_SHORT).show();
    }
    return output;
}

public void btnSchreiben(View view){
    EditText editText = (EditText) findViewById(R.id.editText);
    editText.setText(readFile());
}

Edit: Ich habe gerade herausgefunden, dass das ganze schon beim Textlesen passiert und nicht beim schreiben.

— geändert am 14.06.2014, 15:44:47

Android Developer

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.969

14.06.2014, 16:36:35 via App

dein FileOutputStream und FileInputStream muss auch geschlossen werden

— geändert am 14.06.2014, 16:38:02

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

✨Meine Wunschliste✨

?Telegram NextPit News?

Antworten
Gelöschter Account
  • Forum-Beiträge: 336

14.06.2014, 16:44:37 via Website

Danke für die Hilfe aber ich hab es jetzt so gemacht, dass das char inputbuffer die Länge vom fileInputStream bekommt und so hat es geklappt:

char[] inputBuffer;
//...
inputBuffer = new char[fileInputStream.available()];

Wenn es aber irgendwann wieder nicht klappen wird und meine Lösung auch nicht klappt greife ich natürlich auf deine zurück :D

Android Developer

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.969

15.06.2014, 11:40:48 via App

Das sollte kein Beitrag zum Fehler sein sondern nen Hinweis das was geöffnet wird auch geschlossen werden muss.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

✨Meine Wunschliste✨

?Telegram NextPit News?

Antworten
Gelöschter Account
  • Forum-Beiträge: 336

15.06.2014, 13:25:39 via App

Ah achso ok werde ich mir merken

Android Developer

Antworten