2011-02-01 64 views
1

我是Java和Android开发人员的完整初学者,并且对首选项有疑问。使用getSharedPreferences获取时间

教程要求我使用首选项来读取并保存调用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

将其存储在偏好将成为主要问题。 – EstebanM 2011-02-01 23:00:01

回答

1

我建议你阅读开发指南的有关SharedPreferences章的所有信息......。你可以找到它here

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

Basic代码保存东西的喜好应该是这样的:

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学习如何格式化/转换时间与其方法:)

2

虽然我倾向于对您的问题Falmarri的评论同意,我将提供一些指引...

你应该做的onCreate(首先)是使用new GregorianCalendar()初始化创建的GregorianCalendar实例它到当前日期/时间。

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

存储时间的最简单方法是以毫秒为单位,所以使用GregorianCalendar getTimeInMillis方法(从Calendar继承)获得Long结果。

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

搜索这些页面会给你你需要 Android Developers

+0

由于任何特定原因,GregorianCalendar优于Date吗? – Andrew 2011-02-01 23:04:09