在多用户的Android应用中存储用户设置的最佳方式是什么?
现在我正在使用
SharedPreferences sharedPref = PreferenceManager
.getDefaultSharedPreferences(getActivity().getBaseContext());
String uid = sharedPref.getString("prompt-on-close", "N/A");
我认为这对我不起作用,因为这意味着,所有用户都会共享相同的设置(如果用户注销并且值中的其他符号保持不变)。
我发现了另一种选择:
SharedPreferences sharedPref = getActivity().getSharedPreferences("user1", Context.MODE_PRIVATE);
我仍然不确定这是否是可以解决的问题,更重要的是,如果标准的Prefrences对话框可以使用它。我认为它只使用默认设置。
答案 0 :(得分:0)
你认为方向正确,在我看来,最好的方法是遵循以下步骤==>
初始化
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();
存储数据
// returns stored preference value
// If value is not present return second param value - In this case null
pref.getString("key_name", null); // getting String
pref.getInt("key_name", null); // getting Integer
pref.getFloat("key_name", null); // getting Float
pref.getLong("key_name", null); // getting Long
pref.getBoolean("key_name", null); // getting boolean
清除/删除数据 如果要从共享首选项中删除,可以调用remove(“key_name”)来删除该特定值。如果要删除所有数据,请调用clear()
editor.remove("name"); // will delete key name
editor.remove("email"); // will delete key email
editor.commit(); // commit changes
以下将清除共享偏好中的所有数据
editor.clear();
editor.commit(); // commit changes
编辑==>
Editor e = this.getPreferences(Context.MODE_PRIVATE).edit();
e.putString("password", mPassword);
e.commit();
答案 1 :(得分:0)
您可以使用SQLlite解决此问题,您可以在用户帐户创建时为每个用户创建行并随时更新数据,我通常在需要存储大量的首选项时使用此方法用户应用程序 这个问题在这里解决了关于PreferenceActivity Is it Possible to Use PreferenceActivity with SQLite instead of res/xml?
的评论中的疑问