Android fügt eine Textdatei an
Ich bin tring zu erfassen die wake-Zeit und Schlaf mal aus einem dialog auswählen einer text-Datei, aber der Aufruf der Methode commitToFile2 nicht Anhängen der text Datei "savedData.txt."
Ich weiß, dieser code ist sehr sehr schmutzig. Ich bin neu in Java, damit andere Anregungen würde sehr geschätzt werden.
package com.buttinyourface;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.AdapterView.OnItemClickListener;
public class SettingsActivity extends Activity {
public int wakeHour;
public int wakeMinute;
public int sleepHour;
public int sleepMinute;
public String sleepHourText = "No Data";
public String sleepMinuteText = "No Data";
public String outputTime = "No Data";
public String wakeHourText = "No Data";
private ListView lv;
Dialog newDialogBox;
Context appContext;
protected Context context;
static final private int WAKE_TIME = 0;
static final private int SLEEP_TIME = 1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
final String[] settingsList = getResources().getStringArray(
R.array.settingsStringArray);
lv = (ListView) findViewById(R.id.list);
TextView wakeHourTextView = (TextView) findViewById(R.id.TextView01);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
int settingsPosition = position;
if (settingsPosition == 0) {
showDialog(WAKE_TIME);
wakeHourText = Integer.toString(wakeHour);
}
if (settingsPosition == 1) {
showDialog(SLEEP_TIME);
}
}
});
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, settingsList));
wakeHourTextView.setText(outputTime);
}
public void onPrepareDialog(int id, Dialog dialog) {
switch (id) {
case WAKE_TIME:
break;
case SLEEP_TIME:
break;
}
}
@Override
public Dialog onCreateDialog(int id) {
switch (id) {
case WAKE_TIME:
return new TimePickerDialog(this, WakeTimeSetListener, wakeHour,
wakeMinute, false);
case SLEEP_TIME:
return new TimePickerDialog(this, SleepTimeSetListener, sleepHour,
sleepMinute, false);
}
return null;
}
private TimePickerDialog.OnTimeSetListener WakeTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
wakeHour = hourOfDay;
wakeMinute = minute;
String wakeHourText = Integer.toString(hourOfDay);
String wakeMinuteText = Integer.toString(minute);
String preftime = hourOfDay + ":" + minute;
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
SimpleDateFormat dfOut = new SimpleDateFormat("hh:mma");
Date date = null;
try {
date = df.parse(preftime);
} catch (ParseException e1) {
//TODO Auto-generated catch block
e1.printStackTrace();
}
String outputWakeTime = dfOut.format(date);
try {
commitToFile(wakeHourText, wakeMinuteText, outputWakeTime);
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
};
private TimePickerDialog.OnTimeSetListener SleepTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
sleepHour = hourOfDay;
sleepMinute = minute;
String sleepHourText = Integer.toString(hourOfDay);
String sleepMinuteText = Integer.toString(minute);
String preftime = hourOfDay + ":" + minute;
SimpleDateFormat df = new SimpleDateFormat("HH:mm");
SimpleDateFormat dfOut = new SimpleDateFormat("hh:mma");
Date date = null;
try {
date = df.parse(preftime);
} catch (ParseException e1) {
//TODO Auto-generated catch block
e1.printStackTrace();
}
String sleepOutputTime = dfOut.format(date);
try {
commitToFile2(sleepHourText, sleepMinuteText, sleepOutputTime);
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
};
private void commitToFile(String wakeHourText, String wakeMinuteText,
String outputWakeTime) throws IOException {
final String entryString = new String("wakeHour=" + wakeHourText
+ ";wakeMinute=" + wakeMinuteText + ";wakeTime="
+ outputWakeTime + ";");
FileOutputStream fOut = openFileOutput("savedData.txt",
MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(entryString);
osw.flush();
osw.close();
}
private void commitToFile2(String sleepHourText, String sleepMinuteText,
String sleepOutputTime) throws IOException {
final String entryString = new String("sleepHour=" + sleepHourText
+ ";sleepMinute=" + sleepMinuteText + ";sleepTime="
+ sleepOutputTime + ";");
FileOutputStream fOut = openFileOutput("savedData.txt",
MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(entryString);
osw.flush();
osw.close();
}
}
InformationsquelleAutor der Frage dell116 | 2010-12-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es herausgefunden....Ich hatte die Zeile ändern
zu
Danach war ich in der Lage, das Anhängen der text Datei ohne überschreiben der Daten, die bereits innerhalb der text-Datei. Vielen Dank für Ihre Hilfe Jungs. Ich denke, gehen auf die 4. Seite bei google IST manchmal nützlich.
InformationsquelleAutor der Antwort dell116
so, also Sie behalten Ihre
MODE_WORLD_READABLE
InformationsquelleAutor der Antwort Sparkz
In Ihrem commitToFile2() Methode, nach
fw.append(entryString);
versuchen Siefw.flush();
FileWriter ist eine Unterklasse von OutputStreamWriter und die write () - Methoden dieser Klasse nicht unbedingt "flush" Daten automatisch.
InformationsquelleAutor der Antwort Squonk