Android - время не обновляется - PullRequest
1 голос
/ 03 ноября 2011

я делаю приложение, которое пишет в файл .txt и в конце каждого «сохранения» я хочу поставить дату и время.

это мой код, который превращает время / дату в строку, а затем сохраняет ее в файл.

public class SaveFile extends Activity {

EditText txtData;
EditText txtData2;
Button btnWriteSDFile;
Button btnDelete;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form);

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
    Date date = new Date(System.currentTimeMillis());
    final String datetime = dateFormat.format(date);

txtData = (EditText) findViewById(R.id.input1);
txtData2 = (EditText) findViewById(R.id.input2);

btnWriteSDFile = (Button) findViewById(R.id.save);
btnWriteSDFile.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
    // write on SD card file data in the text box

    try {
        BufferedWriter out = new BufferedWriter(new FileWriter("/sdcard/data_file.txt", true));
        out.write(txtData.getText() + "," + txtData2.getText() + "," + datetime.toString());
        out.write("\r\n");
        out.close();
        Toast.makeText(v.getContext(),"Saved",Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
        Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
    }


        txtData.setText("");
        txtData2.setText("");


}// onClick
}); // btnWriteSDFile

}// onCreate

}// AndSDcard

Проблема, с которой я сталкиваюсь - каждый раз, когда я сохраняю время, не обновляется. каждая строка имеет одинаковое время и дату? кто-нибудь может помочь? С уважением

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Вы всегда пишете время на объекте datetime, который создается только один раз в onCreate(). Вы должны получать текущее время каждый раз в onClick().

Чтобы сделать это, вы должны выбрать средство форматирования как объект класса, а затем каждый раз при записи в файл создавать новую дату:

out.write(txtData.getText() + "," + txtData2.getText() +
          "," + dateFormat.format(new Date());

Обратите внимание, что new Date() автоматически получает текущее время и дату.

1 голос
/ 03 ноября 2011

Вы получаете текущее время один раз и повторно используете его. Вы должны получить текущее время внутри обработчика события:

public void onClick(View v) {
    // write on SD card file data in the text box    
    try {
        BufferedWriter out = new BufferedWriter(new FileWriter("/sdcard/data_file.txt", true));
        Date date = new Date(System.currentTimeMillis());
        final String datetime = dateFormat.format(date);       
        out.write(txtData.getText() + "," +
                  txtData2.getText() + "," +
                  datetime.toString());
        out.write("\r\n");
        out.close();
        Toast.makeText(v.getContext(),"Saved",Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
        Toast.makeText(v.getContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
    }

    txtData.setText("");
    txtData2.setText("");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...