我想存储一个时间值,需要检索和编辑它。我如何使用SharedPreferences来做到这一点?
当前回答
使用这个简单的库,下面是如何调用SharedPreferences..
TinyDB tinydb = new TinyDB(context);
tinydb.putInt("clickCount", 2);
tinydb.putString("userName", "john");
tinydb.putBoolean("isUserMale", true);
tinydb.putList("MyUsers", mUsersArray);
tinydb.putImagePNG("DropBox/WorkImages", "MeAtlunch.png", lunchBitmap);
//These plus the corresponding get methods are all Included
其他回答
写:
SharedPreferences preferences = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Authentication_Id",userid.getText().toString());
editor.putString("Authentication_Password",password.getText().toString());
editor.putString("Authentication_Status","true");
editor.apply();
阅读:
SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE);
String Astatus = prfs.getString("Authentication_Status", "");
为了节省
PreferenceManager.getDefaultSharedPreferences(this).edit().putString("VarName","your value").apply();
收回:
String name = PreferenceManager.getDefaultSharedPreferences(this).getString("VarName","defaultValue");
默认值为:如果该首选项不存在则返回的值。 你可以用getActivity()或getApplicationContext()来改变“this” 某些情况下
要获得共享首选项,请使用以下方法 在活动中:
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
读取首选项:
String dateTimeKey = "com.example.app.datetime";
// use a default value using new Date()
long l = prefs.getLong(dateTimeKey, new Date().getTime());
编辑和保存首选项
Date dt = getSomeDate();
prefs.edit().putLong(dateTimeKey, dt.getTime()).apply();
android sdk的示例目录包含一个检索和存储共享首选项的示例。它位于:
<android-sdk-home>/samples/android-<platformversion>/ApiDemos directory
编辑= = >
我注意到,在这里写commit()和apply()之间的区别也很重要。
如果保存成功,Commit()返回true,否则返回false。它同步保存值到SharedPreferences。
Apply()是在2.3中添加的,无论成功还是失败都不返回任何值。它会立即将值保存到SharedPreferences,但会启动异步提交。 更多细节在这里。
简单和无麻烦::"Android-SharedPreferences-Helper"库
迟到总比不到好:我创建了“Android-SharedPreferences-Helper”库来帮助降低使用SharedPreferences的复杂性和工作量。它还提供了一些扩展功能。它提供的一些东西如下:
一行初始化和设置 轻松选择是使用默认首选项还是自定义首选项文件 每种数据类型的预定义(默认数据类型)和自定义(您可以选择的)默认值 能力设置不同的默认值为单一使用,只是一个额外的参数 你可以注册和取消注册OnSharedPreferenceChangeListener,因为你做的默认类
dependencies {
...
...
compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}
SharedPreferencesHelper对象的声明:(建议在类中 级)
SharedPreferencesHelper sph;
SharedPreferencesHelper对象的实例化:(建议在 onCreate()方法)
// use one of the following ways to instantiate
sph = new SharedPreferencesHelper(this); //this will use default shared preferences
sph = new SharedPreferencesHelper(this, "myappprefs"); // this will create a named shared preference file
sph = new SharedPreferencesHelper(this, "myappprefs", 0); // this will allow you to specify a mode
将价值观融入到共同的偏好中
非常简单!不像默认的方式(当使用SharedPreferences类时),你不需要调用.edit()和.commit()。
sph.putBoolean("boolKey", true);
sph.putInt("intKey", 123);
sph.putString("stringKey", "string value");
sph.putLong("longKey", 456876451);
sph.putFloat("floatKey", 1.51f);
// putStringSet is supported only for android versions above HONEYCOMB
Set name = new HashSet();
name.add("Viral");
name.add("Patel");
sph.putStringSet("name", name);
就是这样!您的值存储在共享首选项中。
从共享首选项中获取值
同样,这只是一个使用键名的简单方法调用。
sph.getBoolean("boolKey");
sph.getInt("intKey");
sph.getString("stringKey");
sph.getLong("longKey");
sph.getFloat("floatKey");
// getStringSet is supported only for android versions above HONEYCOMB
sph.getStringSet("name");
它还有很多其他扩展功能
在GitHub知识库页面上查看扩展功能的详细信息,使用和安装说明等。
editor.putString("text", mSaved.getText().toString());
这里,mSaved可以是任何TextView或EditText,从中我们可以提取一个字符串。您可以简单地指定一个字符串。这里的text将是键,它持有从mSaved (TextView或EditText)获得的值。
SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
此外,不需要使用包名保存首选项文件,即“com.example.app”。你可以提到自己喜欢的名字。希望这能有所帮助!
推荐文章
- Android - SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度
- TextView的字体大小在Android应用程序改变字体大小从本机设置
- 如何模拟Android杀死我的进程
- 禁用EditText闪烁光标
- Android Eclipse -无法找到*.apk
- 设置TextView文本从html格式的字符串资源在XML
- 如何允许所有网络连接类型HTTP和HTTPS在Android(9)馅饼?
- Android加载JS包失败
- Android Studio, logcat在应用程序关闭后清理
- 在android中从上下文获取活动
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?