2012-04-14 19 views
2

我有下面的代码从我的XML选项文件获取长期价值,我如何getLong()从SharedPreference在偏好设置

SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 

long longBreak = Integer.parseInt(getPrefs.getString("breakTime", "8000")); 
long shortBreak = Integer.parseInt(getPrefs.getString("breakTime", "5000")); 
long workTime = Integer.parseInt(getPrefs.getString("workTime", "10000")); 

出于某种原因,我logcat的节目是对行的错误“SharedPreference getPrefs = ....” 和我的Android应用程序中断它加载长值之前....

我有我喜欢的XML如下,

<ListPreference 
    android:entries="@array/workList" 
    android:entryValues="@array/workTimes" 
    android:key="workTime" 
    android:summary="Choose Work Time" 
    android:title="Work Time" /> 
<ListPreference 
    android:entries="@array/breakList" 
    android:entryValues="@array/breakTimes" 
    android:key="breakTime" 
    android:summary="Choose Break Time" 
    android:title="Break Time" /> 

和我的数组值如下,

<string-array name="workList"> 
    <item>25 Minutes</item> 
    <item>10 Seconds</item> 
</string-array> 
<string-array name="breakList"> 
    <item>15 Minutes</item> 
    <item> 5 Minutes</item> 
    <item>8 Secs</item> 
    <item>5 Secs</item> 
</string-array> 
<string-array name="workTimes"> 
    <item>1500000</item> 
    <item>10000</item> 
</string-array> 
<string-array name="breakTimes"> 
    <item>900000</item> 
    <item>300000</item> 
    <item>8000</item> 
    <item>5000</item> 
</string-array> 

我测试的差异应用相同的代码,它工作正常....任何帮助?在此先感谢...

+0

请添加你的堆栈跟踪。另外,要解析一个long,你需要调用'Long.parseLong()'而不是'Integer.parseInt()'。 – Vincent 2014-08-31 06:15:19

回答

5

您可以使用:

SharedPreferences shared = getSharedPreferences("file_pref", MODE_PRIVATE); 
to get a object of SharedPreferences 

从SharedPreferences得到长期价值:你应该使用putLong( “键”, “值”)从SharedPreferences类的编辑器和getLong(”键“,”default_value“)来获得你想要的值。例如:

//创建:

SharedPreferences shared = getSharedPreferences("file_pref", MODE_PRIVATE); 
Editor edit = shared.edit(); 
shared.putLong("key1","value1"); 

//使用:

SharedPreferences shared = getSharedPreferences("file_pref", MODE_PRIVATE); 
Long value_long = shared.getLong("key1",0); 
//with 0 - default value 

你可以看到这个链接了解如何使用SharedPreferences类在Android中保存简单的信息清晰,很容易:

Save values before close the app?

希望这将是我们对你有益。

+0

感谢您的建议,但您所描述的内容将如何让用户在首选项屏幕中看到这些输入的设置?使用xml方法,用户可以选择他们想要的设置,并且我有一些默认输入。我现在想要从首选项中读取这些值,并在我的活动中使用它们。但由于某种原因,我的应用程序在达到SharedPreferences getPrefs = PreferencesManager.getDefaultSharedPreferences(getBaseContext())行时崩溃; ... – user772401 2012-04-15 15:10:09

+1

您可以尝试此链接:http://www.javacodegeeks.com/2011/01/android-快速的喜好,tutorial.html。这很容易理解。 – secretlm 2012-05-31 14:02:05

+0

@secretlm:在链接的文章中,使用'getString()'读取值。 OP想要使用'getLong()'。 – Vincent 2014-08-31 05:55:40