标签: sharedpreferences

PreferenceActivity:将值保存为整数

EditTextPreference在我的偏好活动中使用简单的:

<EditTextPreference
    android:key="SomeKey"
    android:title="@string/some_title"
    android:summary="..."
    android:numeric="integer"
    android:maxLength="2"
/>
Run Code Online (Sandbox Code Playgroud)

有没有办法将此配置值保存为整数?现在似乎只允许输入数字,但该值仍保存为字符串:

呼叫:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
int value = preferences.getInt("SomeKey", -1);
Run Code Online (Sandbox Code Playgroud)

抛出我java.lang.ClassCastException: java.lang.String,并且:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String value = preferences.getString("SomeKey", "-1");
Run Code Online (Sandbox Code Playgroud)

成功检索值.

如何PreferenceActivity默认将值保存为整数?

android preferenceactivity sharedpreferences

49
推荐指数
2
解决办法
4万
查看次数

SharedPreferences和线程安全

查看SharedPreferences文档,它说:

"注意:目前这个类不支持跨多个进程使用.这将在以后添加."

所以它本身似乎并不是线程安全的.但是,对commit()和apply()有什么样的保证?

例如:

synchronized(uniqueIdLock){
   uniqueId = sharedPreferences.getInt("UNIQUE_INCREMENTING_ID", 0);
   uniqueId++;
   sharedPreferences.edit().putInt("UNIQUE_INCREMENTING_ID", uniqueId).commit();
}
Run Code Online (Sandbox Code Playgroud)

是否可以保证uniqueId在这种情况下始终是唯一的?

如果没有,是否有更好的方法来跟踪持续存在的应用程序的唯一ID?

android thread-safety sharedpreferences

48
推荐指数
2
解决办法
3万
查看次数

使用哪种Android数据存储技术?

android文档在下面有以下选项,但没有解释每种情况最适合的情况.每种方法的优缺点是什么?例如,在什么条件下SQL会优于共享首选项?

  • 共享首选项
  • 内部存储器
  • 外部存储
  • SQLite数据库
  • 网络连接

java sqlite android data-storage sharedpreferences

47
推荐指数
3
解决办法
3万
查看次数

广播接收器内的共享偏好

在我的应用程序中,我想在广播接收器中使用共享首选项...但我无法访问里面的getPreferences()方法...

 SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)

我不能用上下文对象调用...任何其他方法???

android broadcastreceiver sharedpreferences

45
推荐指数
1
解决办法
2万
查看次数

Android - 带有可序列化对象的SharedPreferences

我知道SharedPreferences有putString(),putFloat(),putLong(),putInt()putBoolean().但我需要存储一个对象,它是类型的SerializableSharedPreferences.我怎样才能做到这一点?

serialization android sharedpreferences

43
推荐指数
5
解决办法
3万
查看次数

共享首选项 - 单个值的最大长度

我将String存储到共享首选项中,但我无法找到我可以存储的最大字符串长度.你知道这个价值吗?

android sharedpreferences

43
推荐指数
3
解决办法
3万
查看次数

我可以从服务中的共享首选项中获取数据吗?

我正在开发一个Android应用程序.我正在使用android 2.2

在我的应用程序中,我正在捕获GPS数据并以1小时的时间间隔将其发送到服务.如果用户退出应用程序,它也可以正常工作(这是必需的).

我正在使用2个服务(用户定义),一个用于捕获GPS数据,另一个用于发送到服务器.

在这里我怀疑

  • 在服务中,我们可以使用共享首选项.

  • 如果我们将任何数据存储在应用程序的任何活动中的共享首选项中,我们是否可以在共享首选项的帮助下使用该服务中的数据?

android android-service sharedpreferences android-2.2-froyo

43
推荐指数
5
解决办法
5万
查看次数

检查共享首选项中是否存在密钥

我正在创建共享首选项,如下所示

preferences = getSharedPreferences("text", 0);
final Editor editor = preferences.edit();

String s1 = serverIP.getText().toString();
String s2 = serverPort.getText().toString();
String s3 = syncPass.getText().toString();
String s4 = proxyServer.getText().toString();
String s5 = proxyPort.getText().toString();

editor.putString("SERVERIP", s1);
editor.putString("SERVERPORT", s2);
editor.putString("SYNCPASS", s3);
editor.putString("PROXYSERVER", s3);
editor.putString("PROXYPORT", s3);
Run Code Online (Sandbox Code Playgroud)

和onCreate我想在一组新的TextViews中显示值,但是第一次我没有在共享首选项中存储任何值,并且会得到一个NULL指针异常.

我想知道是否有任何内置方法可以检查SharedPreferences是否包含任何值,以便我可以检查密钥是否存在,如果不存在,则将新的TextViews集替换为首选项值.

android sharedpreferences

42
推荐指数
3
解决办法
6万
查看次数

如何检查SharedPreferences是否存在

我正在以这种方式检查文件是否存在,但我需要超越,我需要知道具体是否有一个,有什么办法吗?

File f = new File("/data/data/com.eventrid.scanner/shared_prefs/Eventrid.xml");
          if (f.exists()){

          }
          else{

          }  
Run Code Online (Sandbox Code Playgroud)

android sharedpreferences

42
推荐指数
2
解决办法
5万
查看次数

Android M奇怪的共享偏好问题

在运行Android M Developer Preview 2的Nexus 5上,当卸载/重新安装应用程序时,设备正在检索我很久以前存储的共享首选项,例如布尔值isFirstLaunch.

清除这些的唯一方法是从设备设置手动执行.

Android M上的共享首选项行为是否有任何变化?我找不到任何关于此的文件.

或许Android M Preview 2 ROM有一个bug ...

android sharedpreferences android-6.0-marshmallow

42
推荐指数
3
解决办法
1万
查看次数