Archivo de texto adjunto de Android
Estoy tratando de grabar la hora de despertar y el tiempo de sueño de un selector de diálogo a un archivo de texto como este, pero la llamada al método commitToFile2 no agrega el archivo de texto "savedData.txt".
Sé que este código es muy, muy sucio. Soy nuevo en Java por lo que cualquier otra sugerencia sería muy apreciada.
- Android Ver agregar niño
- ¿Cómo mostrar un cuadro de edición de texto "sobre" la pantalla?
- Texto de vista de texto de android en dirección vertical
- QPushButton ha duplicado texto después de la actualización Qt
- ¿Cómo lo hicieron? Diálogos sobre la pantalla de inicio
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(); } }
- Método recomendado para presentar texto con formato en Android?
- ¿Cómo podemos aumentar el tamaño de la fuente en tostadas?
- ¿Es posible para TextView Marquee en un Widget que extiende AppWidgetProvider?
- Android - ¿Es posible superponer texto en texto?
- se llama onmeasure y no sé por qué - android
- Android Cambiar elementos de menú del cajón de navegación Texto por programación
- Cómo cambiar el color del texto del hilandero
- Android - cómo configurar el texto para el botón de inicio de sesión de google + después de autenticado
Me di cuenta … tuve que cambiar la línea
FileOutputStream fOut = openFileOutput("savedData.txt", MODE_WORLD_READABLE);
a
FileOutputStream fOut = openFileOutput("savedData.txt", MODE_APPEND);
Después de eso pude añadir el archivo de texto sin sobrescribir los datos que ya estaban dentro del archivo de texto. Gracias por su ayuda chicos. Supongo que ir a la cuarta página en google es útil a veces.
eso es lo que conservas tu MODE_WORLD_READABLE
openFileOutput("savedData.txt", MODE_APPEND | MODE_WORLD_READABLE );
En su método commitToFile2 (), después de fw.append(entryString);
intenta agregar fw.flush();
FileWriter es una subclase de OutputStreamWriter y los métodos write () de esa clase no necesariamente 'liberarán' los datos automáticamente.
- Anotación Los procesadores generaron recursos no empaquetados a APK
- Cómo obtener UTC de desplazamiento en segundos en android