K
Klawifiantix
Neues Mitglied
- 0
Hallo zusammen,
ich bin erst seit ein paar Tagen dabei mir Java Grundkenntnisse anzueignen, da ich gerne eine eigene Android App mit Android Studio basteln möchte. Winzige Teilerfolge konnte ich schon erlangen. Für die meisten hier wird es ein Witz sein, aber da ich über keine Vorkenntnisse verfüge, erkenne ich Fortschritte.
Ich möchte vorerst eine ganz simple App erstellen. Dabei möchte ich einen Text schreiben und diesen in ein ViewText Feld übertragen. Soweit habe ich das schon mal hinbekommen. Nun möchte ich den Text auch noch abspeichern, so dass ich ihn sehe, wenn ich die App schließe und erneut starte. Das funktioniert auch. Mein Problem ist nur, dass wenn ich Speicher, obwohl kein Text existiert, zwar eine Datei erstellt wird, allerdings (so nehme ich an) diese keinen Inhalt hat. Wenn ich dann die App erneut starte, hängt diese sich auf. Ich habe versucht mit file.exist() zu arbeiten, aber das will nicht so recht klappen. Hat hier jemand eine Idee?
Prügelt mich bitte nicht, wenn die Antwort hier schon im Forum steht. Ich bin leider noch nicht auf dem Stand mir alles zusammen zu schustern.
Hier mal der komplette Code, da ich noch nicht weiß, was man wissen muss, um mir helfen zu können:
Lieben Dank im Voraus!
ich bin erst seit ein paar Tagen dabei mir Java Grundkenntnisse anzueignen, da ich gerne eine eigene Android App mit Android Studio basteln möchte. Winzige Teilerfolge konnte ich schon erlangen. Für die meisten hier wird es ein Witz sein, aber da ich über keine Vorkenntnisse verfüge, erkenne ich Fortschritte.
Ich möchte vorerst eine ganz simple App erstellen. Dabei möchte ich einen Text schreiben und diesen in ein ViewText Feld übertragen. Soweit habe ich das schon mal hinbekommen. Nun möchte ich den Text auch noch abspeichern, so dass ich ihn sehe, wenn ich die App schließe und erneut starte. Das funktioniert auch. Mein Problem ist nur, dass wenn ich Speicher, obwohl kein Text existiert, zwar eine Datei erstellt wird, allerdings (so nehme ich an) diese keinen Inhalt hat. Wenn ich dann die App erneut starte, hängt diese sich auf. Ich habe versucht mit file.exist() zu arbeiten, aber das will nicht so recht klappen. Hat hier jemand eine Idee?
Prügelt mich bitte nicht, wenn die Antwort hier schon im Forum steht. Ich bin leider noch nicht auf dem Stand mir alles zusammen zu schustern.
Code:
//Über einen Button kann ich Text in einer .txt Datei hiermit speichern.
public void textSpeichern(View view) {
try {
String data = tv.getText().toString();
fos = openFileOutput(geschriebenes, Context.MODE_PRIVATE);
fos.write(data.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//Das soll der Befehl sein, um die Datei auszulesen, wenn sie existiert.
File f = new File(geschriebenes);
if (f.exists()) {
try {
fis = openFileInput(geschriebenes);
byte[] readData = new byte [fis.available()];
while (fis.read(readData) != -1){
collected = new String(readData);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
tv.setText(collected);
Hier mal der komplette Code, da ich noch nicht weiß, was man wissen muss, um mir helfen zu können:
Code:
package de.diz.versuch;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Context;
import android.graphics.Path;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import org.w3c.dom.Text;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.io.Writer;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;
import static de.diz.versuch.R.string;
public class MainActivity extends Activity {
public TextView tv; //Das Textfeld, in dem der Text abschließend stehen soll.
public TextView da; //Das Textfeld, in dem das Datum angezeigt wird.
public EditText et; //Das Textfeld, in das geschrieben wird.
public Button btn2; //Der Button zum Bearbeiten.
public SimpleDateFormat Datum = new SimpleDateFormat("HH:mm - dd.MM.yyyy"); //Definieren des Formats, mit dem das Datum angezeigt werden soll.
public FileOutputStream fos;
public FileInputStream fis;
public String geschriebenes = "test.txt";
public String collected;
//Die Hauptfunktion. hier definiere ich die Variablen.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
tv = (TextView)findViewById(R.id.Text);
tv.setMovementMethod(new ScrollingMovementMethod());
et = (EditText)findViewById(R.id.eingabe);
da = (TextView)findViewById(R.id.datum);
btn2 = (Button)findViewById(R.id.btn2Klick);
btn2.setVisibility(View.GONE);
File f = new File(geschriebenes);
if (f.exists()) {
try {
fis = openFileInput(geschriebenes);
byte[] readData = new byte [fis.available()];
while (fis.read(readData) != -1){
collected = new String(readData);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
tv.setText(collected);
}
if(tv.getText().toString().equals("")) {
btn2.setVisibility(View.GONE);
}else {
btn2.setVisibility(View.VISIBLE);
}
}
//Diese Funktion/en wird/werden ausgeführt, wenn der Button "Eingabe" benutzt wird.
public void displayEditText(View view) {
//Hier wird das Datum gesetzt
if (et.getText().toString().equals("")){
}else {
if(da.getText().toString().equals("")){
Date currentTime = new Date();
da.setText(Datum.format(currentTime));
}
}
//Hier wird der Text aus dem EditText Feld in das ViewText Feld übertragen.
if (tv.getText().toString().equals("")&(et.getText().toString().equals(""))){
}else {
if(tv.getText().toString().equals("")){
String editTextValue = (et.getText().toString());
tv.setText(editTextValue);
et.setText("");
btn2.setVisibility(View.VISIBLE);
}
}
//Hier wird Text aus dem EditText Feld dem ViewText Feld hinzugefügt.
if (et.getText().toString().equals("")){
}else{
String editTextValue = (tv.getText().toString()) + ('\n') + (et.getText().toString());
tv.setText(editTextValue);
et.setText("");
}
}
//Diese Funktion läuft, wenn der Button "Bearbeiten" gedrückt wird.
public void textBearbeiten(View view) {
//Hier wird Text von dem ViewText Feld in das EditText Feld übertragen. Und der Text im ViewText Feld gelöscht.
if (tv.getText().toString().equals("")){
}else{
et.setText(tv.getText().toString());
tv.setText("");
btn2.setVisibility(View.GONE);
}
}
public void textSpeichern(View view) {
try {
String data = tv.getText().toString();
fos = openFileOutput(geschriebenes, Context.MODE_PRIVATE);
fos.write(data.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Lieben Dank im Voraus!