我是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);
}
但这就是我似乎迷失的地方。我甚至不确定我是否朝着正确的方向前进。
答案 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,了解如何使用其方法格式化/转换时间:)