Hurro!
我正在努力編寫我的第一個Android應用程序,並且我碰到了一堵磚牆。SharedPreferences和TimePickerDialog
我想允許用戶設置一個'開始'和'停止'時間,每天的時間表。我已經成功實現了TimePickerDialog和它旁邊的TextView,但是我不能爲我的LIFE找出如何將用戶選擇的時間保存到SharedPreferences字符串。
代碼如下(精簡爲清晰起見):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.setup);
// Retrieve the shared preferences
mUserSettings = getSharedPreferences(USER_PREFERENCES, MODE_PRIVATE);
// capture our View elements
mTimeDisplayStart = (TextView) findViewById(R.id.TextView_ScheduleStart_Info);
mPickTimeStart = (Button) findViewById(R.id.Button_ScheduleStart);
// add a click listener to the button
mPickTimeStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(TIME_DIALOG_START);
}
});
// get the current time
final Calendar c = Calendar.getInstance();
mHourStart = c.get(Calendar.HOUR_OF_DAY);
mMinuteStart = c.get(Calendar.MINUTE);
// display the current date
updateDisplayStart();
}
// updates the time we display in the TextView
private void updateDisplayStart() {
mTimeDisplayStart.setText(
new StringBuilder()
.append(padStart(mHourStart)).append(":")
.append(padStart(mMinuteStart)));
}
private static String padStart(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
// the callback received when the user "sets" the time in the dialog
private TimePickerDialog.OnTimeSetListener mTimeSetListenerStart =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHourStart = hourOfDay;
mMinuteStart = minute;
updateDisplayStart();
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_START:
return new TimePickerDialog(this,
mTimeSetListenerStart, mHourStart, mMinuteStart, false);
}
return null;
}
我認爲時間應該在同一時間,該TextView的更新被保存......但我不知道如何做到這一點 - .-
我現在花了5或6個小時尋找答案,但我幾乎找不到一個答案。我已經用SharedPreferences.Editor進行了實驗,但這不起作用,因爲我需要將時間存儲爲long而不是String。
我在我的繩索末端,我真的很感謝一些幫助!
這不僅僅是將''starttime''設置爲當前時間嗎? 不過我會嘗試一下。謝謝! – TrippySquidsman 2012-03-21 05:22:44
這是一個示例代碼把一個很長的數據放在首選項中,你可以用你自己的方式修改它 – Dharmendra 2012-03-21 05:48:54
然後cal.getTimeInMillis()會返回你在piker對話框中設置的日期 – Dharmendra 2012-03-21 05:50:04