我正在尝试制作一个“记忆”来在StringArray中保存三个日期+小时。 我将用代码更好地解释。在我的主要活动中,我称之为:
conf.setDateArray(completeDate, conf.getPosition());
这两个参数是(一个String,一个带有数组[0或1或2]位置的int)。 我的问题来自Configuration类:
private String[] strDateArray = new String[3];
private int position = 0;
public void setDateArray(String str, int position) {
SharedPreferences.Editor editor = getSettings().edit();
// The problem is this code, I dont know how to write in the array in
// the position
this.strDateArray(position) = str(position);
editor.putString(KEY_DATEARRAY, str);
//
editor.commit();
if (position == 2) {
this.position = 0;
} else {
this.position++;
}
}
感谢您的帮助!
编辑:我想做的一个例子 我想在StringArray [0]中引入类似“20-02-2014 14:14”的日期,让用户在再次启动APP时获得此值。我的目的是获得最后三个可能的值,当所有数组都被填充时,position = 0将被覆盖。
答案 0 :(得分:0)
private static final String[] KEYS = { "0", "1", "2" };
private static final String POSITION = "LAST_POSITION";
public void setDateArray(String str) { // no need to pass the position in
SharedPreferences prefs = getSettings(); // what's getSettings ?
int pos = prefs.getInt(POSITION, 0); // get the last position - if you kept
// it in a field on app restart you will loose it
final Editor editor = prefs.edit();
editor.putString(KEYS[pos], str);
pos = (pos + 1) % 3; // if pos + 1 == 3 with the %3 you get 0
editor.putInt(POSITION, pos);
editor.commit();
}
虽然我确信有一种更简单的方法可以做到这一点