2011-11-02 40 views
1

即时制作一个应用程序写入.txt文件,并在每个“保存”结束时,我想把日期和时间。Android - 时间不更新

这是我的代码,将时间/日期变成一个字符串,然后将其保存到文件。

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 

即时通讯存在的问题是我每次保存时间不更新。 每一行有相同的时间和日期? 任何人都可以帮忙吗? 关于

+1

只是抬起头来,您正在主线程上写入SDCard。当数据很小时,它可能不会成为大多数设备上的问题,但是如果有大量数据要写入,设备正忙于使用SDCard作为其他内容等,则会导致ANR。 – FunkTheMonk

回答

1

,你老是写所创建仅在onCreate()一次DateTime对象上的时间。您应该每次在onClick()获得当前时间。

要写入文件的时候做到这一点,你应该瑟格式化为类对象,然后创建新的日期,每次:

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

注意new Date()自动获取当前的时间和日期。

+0

工作对待,非常感谢 – Leigh8347

1

您正在获取当前时间并重新使用它。你应该得到的当前时间的事件处理中:

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(""); 
}