使用getSharedPreferences获取时间

时间:2011-02-01 22:29:21

标签: android preferences

我是Java和Android开发的完全初学者,并且对偏好有疑问。

教程要求我使用首选项来读取并保存调用onCreate方法的时间。

我已经在这个问题上坐了至少两天,但却什么都没有。任何人都可以举例说明如何编写这样的动作吗?

public static final String PREFS_NAME = "Time_Pref";
public class QuizSplashActivity extends QuizActivity {

@Override   

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    SharedPreferences = getSharedPreferences ("Time_Pref", "MODE_PRIVATE); 
}

但这就是我似乎迷失的地方。我甚至不确定我是否朝着正确的方向前进。

2 个答案:

答案 0 :(得分:2)

虽然我倾向于同意Falmarri对你的问题的评论,但我会提供一些指示......

你应该在onCreate()中做的第一件事是使用GregorianCalendar创建new GregorianCalendar()的实例,将其初始化为当前日期/时间。

接下来使用getSharedPreferences创建SharedPreferences,然后使用其edit()方法获取编辑器。

存储时间的最简单方法是以毫秒为单位,因此请使用GregorianCalendar getTimeInMillis方法(继承自Calendar)获取Long结果。

最后,使用SharedPreferences编辑器的putLong()方法存储getTimeInMillis的结果,并使用编辑器的commit()方法使更改成为永久更改。

搜索这些页面将为您提供所需的所有信息...... Android Developers

答案 1 :(得分:1)

我建议您阅读开发指南关于SharedPreferences的章节。你可以找到它here

我建议您使用System.currentTimeMillis()来获取要保存的时间值。

将内容保存到首选项的基本代码应如下所示:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // view setup stuff here...

    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putLong("onCreateCallTime", System.currentTimeMillis());
    editor.commit();
}

然后使用android.text.format.Time类在从首选项中读取后格式化该时间:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
long timeMillis = settings.getLong("onCreateCallTime", 0);
Time t = new Time();
t.set(timeMillis);

阅读时间课程documentation,了解如何使用其方法格式化/转换时间:)