Tôi đang dò tìm thời gian đánh thức và thời gian ngủ từ bộ chọn hộp thoại đến tệp văn bản như thế này, nhưng lệnh gọi phương thức commitToFile2 không nối thêm tệp văn bản "savedData.txt".Android chắp thêm tập tin văn bản
Tôi biết mã này rất rất bẩn. Tôi mới đến Java vì vậy bất kỳ đề xuất khác sẽ được đánh giá rất nhiều.
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();
}
}
"Tôi mới đến Java vì vậy bất kỳ lời đề nghị khác sẽ được đánh giá rất nhiều." : SỬ DỤNG ĐỊNH CỦA IDE CỦA BẠN, để lắc gosh. Và không đặt tên biến cục bộ bằng các ký tự ban đầu (như SleepTimeSetListener, chú ý cách nó được tô màu như kiểu trên). Điều này làm cho mọi người không quen với java không thể đọc được mã của bạn. KHÔNG gửi thông tin dư thừa khi đặt câu hỏi (như '// TODO khối catch được tạo tự động') –
@Mr_and_Mrs_D - Đọc phần này gần 8 năm sau ..... Ôi trời ơi, tôi đã hút! Cảm ơn bạn đã hướng dẫn tôi đi đúng hướng! – dell116
Xin chào - chào mừng bạn :) –