Articles of sharedpreferences

OnPreferenceChangeListener和OnSharedPreferenceChangeListener之间有什么不同

我想获得一个checkboxpreference的价值。 哪种方法适合倾听偏好? OnPreferenceChangeListener和OnSharedPreferenceChangeListener之间有什么区别? 更新为什么没有调用onSharedPreferenceChanged? public class Setting extends PreferenceActivity implements OnSharedPreferenceChangeListener // ,OnPreferenceChangeListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences);// deprecated warning } @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) {// DO Stuff } @Override protected void onResume() { super.onResume(); // getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); // PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this); this.getSharedPreferences(“myPrefDB”, MODE_PRIVATE) .registerOnSharedPreferenceChangeListener(this); } @Override protected void onPause() […]

更新Android应用时如何清除旧的首选项?

我在Google Play市场上有一款应用。 由于各种原因,我不打算进入,我已经改变了我的一些偏好的types。 例如,首选项types是Integer,在最新版本中它现在是String。 我想这不是一个好习惯,但不幸的是我不得不这样做。 我担心的是,当有人更新新版本时,他们的应用会因偏好types发生变化而崩溃。 出于这个原因,我想在应用程序更新时清除首选项(再次,我意识到不理想!) 这可能吗?

默认共享首选项使用的文件名是什么?

Android备份服务需要一个文件名来备份共享首选项: public static final String PREFS = “PrefFile”; SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS); 如果在创建首选项期间给出了文件名,那么很清楚要使用什么 public static final String PREF_FILE_NAME = “PrefFile”; SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 但我使用默认的共享首选项: SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 我应该将PREFS值传递给SharedPreferencesBackupHelper ?

在Android上保存数据:文件存储与SQLite数据库与共享首选项

这个标题让我想知道在特定应用程序中保存中到大数据最适合的function。 我知道我最近在Stackoverflow上看到过有关使用这些function保存数据的问题,但我想知道,正如我所说,最适合的。 你有什么建议吗?

Android EditText首选项validation

我使用Edittextpreference作为设置部分中的首选项之一。 我想在用户向其输入数据并单击确定时validation此edittextpreference; 在将其保存在共享首选项之前。 我试图做这样的事情,但这首先保留了我的偏好。 editTextPreference .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (((newValue.toString().length() == 15) { // save preference only if length is equal to 15 } }) }); 有人可以指导我如何validationedittextpreference之前保存在sharedpreference中,以便我可以决定是否要保存它。

Android在Play商店推送更新

我有一个应用程序依赖于SQLite的数据,该数据由assets文件夹中的应用程序随附的xmls填充。 第一次设置共享首选项时运行应用程序config_run = false。 然后我检查是否config_run = false然后解析xml并将数据转储到db 设置config_run = true 现在我意识到,当我必须在Google Play上推送更新并在XML中添加更多内容时。 即使我将数据库版本从1更改为2.导入脚本将不会运行,因为共享首选项config_run值将设置为true。 有关如何处理这种情况的任何指示? 方案 第一次安装 – Ver = 1,DB V = 1(数据被解析并转储到数据库中) 错误修复,推送和更新但没有数据发生变化 – ver = 1.1,DB V = 1(它应该只替换代码而不是升级或重新创建数据库) 升级了DATA并推送了一个新的更新 – 版本1.2,DB = 2(没有新代码,但必须重新创建数据) 我的应用程序的流程 该应用程序启动启动活动。 如果Shared Pref – config_run等于false,则它启动Progress Dialog并将数据解析并转储到数据库中。 在解析和创建数据库并转储数据后,它将转到MainActivity。 第二个案例 SplashActivity运行和config_run = true因此直接转到MAin活动。 正如以下几个人所建议的那样,如果我尝试在SQLiteHelper的onUpgrade中将数据变为数据库,那么它将仅在MAinActivity中发生,因为我在SplashActivity中不打开Db连接并且也不会显示Dialog Progress。

将字符串的arraylist保存为共享首选项

将API的ArrayList保存到API级别8的SharedPreferences的最佳方法是什么? 我现在能想到的唯一方法是将所有字符串保存到一个用逗号分隔的字符串中并以这种方式保存。 但我不知道字符串是否有最大大小。 有一个更好的方法吗?

优惠项目会自动重新设定?

这对我来说似乎是一个错误:当您在首选项片段中加载许多开关首选项时,它们会在您滚动首选项时以某种方式重新设置自己。 我用小的演示代码单独测试了这个: /res/xml/prefs.xml (只是一堆开关首选项,足以让首选项在屏幕上滚动): /src/Prefs.java (一个简单的PreferenceFragment ): package com.example.preflistbug; import android.os.Bundle; import android.preference.PreferenceFragment; public class Prefs extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); } } /res/layout/main.xml (在活动布局中放置PreferenceFragment ): /src/MyActivity.java (演示活动): package com.example.preflistbug; import android.app.Activity; import android.os.Bundle; public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } […]

通过’强制停止’或任务管理器杀死应用程序后,共享首选项byte 值被清除

问题 我在共享首选项中保存了一个byte[] 。 我可以关闭应用程序并使用共享首选项中持久保存的值重新打开它。 运行应用程序并通过“任务管理器”或“强制关闭”关闭它时,将清除byte[]的共享首选项值。 我不明白这一点,因为其他价值观仍然存在。 这让我相信这是由于某些gson或共享首选项问题与byte[]所以我将其转换为String并且我仍然有问题。 编辑: 我在正常活动使用期间保存数据…例如在onCreate()之后。 它不是在onPuse()或onDestroy()我忘了提到这一点。 如果我在这里调用它并且在“强制关闭”场景中没有调用其中一个或两个,那将是有意义的。 共享偏好码 稍加修改以删除应用程序特定的实现和数据 private static final String SHARED_PREFERENCES_FILE_NAME = “SharedPreferenceName”; public static void setSharedPreferenceObjectBase64Encoded(Context context, String key, Object object) throws Exception { // Need an editor to update shared preference values SharedPreferences.Editor editor = context.getSharedPreferences(SHARED_PREFERENCES_FILE_NAME, Context.MODE_PRIVATE).edit(); Gson gson = new GsonBuilder().serializeNulls().setDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SSSZ”).create(); String encodedKey = Base64.encodeToString(key.getBytes(), […]

Android小部件按钮停止工作

我有一个带有小部件的Android应用程序,它有按钮。 这段代码有效。 当发生某些事情时,小部件上的按钮停止工作 ,例如更改手机的语言。 我使用共享首选项,因此如果用户重新安装应用程序( 不卸载 ),按钮将再次运行 ,设置仍然是设置的。 我注意到我的AppWidgetProvider类中的Intents(此分析下的代码)没有被适当地触发。 我向从AppWidgetProvider实例化的Call1类添加了一个Toast消息,但它没有显示。 我的UpdateService.java只是获取设置首选项并自定义窗口小部件的外观,所以我认为它可能与我的问题无关。 我的Main.java文件只包含微调器并保存共享首选项,这意味着我在微调器中选择“计算机”,以便“微软”上出现“计算机”文本。 当我改变手机的语言时,它也不会消失,图像也不会消失。 因此,我相信UpdateService.java必须正常。 这是AppWidgetProvider类: public class HelloWidget extends AppWidgetProvider { public static String ACTION_WIDGET_CONFIGURE = “ConfigureWidget”; public static String ACTION_WIDGET_CONFIGURE2 = “ConfigureWidget”; public static String ACTION_WIDGET_RECEIVER = “ActionReceiverWidget”; public static String ACTION_WIDGET_RECEIVER2 = “ActionReceiverWidget”; private static final int REQUEST_CODE_FOUR = 40; private static final […]