我正在尝试阅读Fragment中的SharedPreferences.我的代码是我用来获取任何其他Activity的首选项.
SharedPreferences preferences = getSharedPreferences("pref", 0);
Run Code Online (Sandbox Code Playgroud)
我收到错误
Cannot make a static reference to the non-static method getSharedPreferences(String, int) from the type ContextWrapper
Run Code Online (Sandbox Code Playgroud)
我试图遵循这些链接,但没有运气通过静态方法和 静态SharedPreferences 访问SharedPreferences.谢谢你的任何解决方案.
SharedPreferences有方法getAll,但它不返回任何条目,尽管存在一些键:
PreferenceManager.getDefaultSharedPreferences(this).contains("addNewAddress");
Run Code Online (Sandbox Code Playgroud)
返回true
Map<String, ?> keys=PreferenceManager.getDefaultSharedPreferences(this).getAll();
Run Code Online (Sandbox Code Playgroud)
返回空地图
怎么了?如何获取所有共享首选项的列表?
我有一个应用程序,我必须在其中实现"登录"活动.我有这些组件:
我希望我的应用程序在用户登录后记住用户的登录详细信息,直到用户按下"注销"按钮.我没有在我的xml中使用首选项.
如何在我的应用程序中使用getSharedPreferences(String name,int mode)?
我有一个对象的ArrayList.该对象包含"Bitmap"和"String"类型,然后只包含两者的getter和setter.首先是Bitmap可序列化?
我如何将其序列化以将其存储在SharedPreferences中?我见过很多人问过类似的问题,但似乎没有人给出一个好的答案.如果可能的话,我更喜欢一些代码示例.
如果位图不可序列化,那么我该如何存储这个ArrayList?
非常感谢.
我有一个扩展PreferenceActivity的类,并显示我的应用程序的首选项屏幕.是否可以检查是否对首选项进行了任何更改?
这有助于......
其他相关帖子: SharedPreferences.onSharedPreferenceChangeListener未被一致地调用
public class PreferenceClass extends PreferenceActivity {
OnSharedPreferenceChangeListener listener;
public void onCreate(Bundle savedInstanceState) {
SharedPreferences prefs = this.getSharedPreferences("settings", 0);
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
int flag = 1;
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
super.onCreate(null);
addPreferencesFromResource(R.xml.settings);
}
}
Run Code Online (Sandbox Code Playgroud) android preferenceactivity android-preferences sharedpreferences
我onSharedPreferenceChanged在我的主要活动中实施了.
如果我更改主活动中的首选项,则会触发我的事件.
如果我通过我的首选项屏幕更改首选项(PreferenceActivity)我的事件不会在首选项被更改时触发(因为它是一个单独的活动和对sharedPreferences的单独引用?)
有人建议我应该如何克服这种情况?
谢谢!
EDIT1:我尝试在我的首选项活动中添加事件处理程序但它永远不会触发.在我的首选项活动的onCreate期间调用以下方法.当我更改值时,它永远不会打印消息(msg()是包装器Log.d).
private void registerChangeListener () {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener () {
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
msg (" ***** Shared Preference Update ***** ");
Intent i = new Intent();
i.putExtra("KEY", key);
i.setAction("com.gtosoft.dash.settingschanged");
sendBroadcast(i);
// TODO: fire off the event
}
});
}
Run Code Online (Sandbox Code Playgroud) 我需要在共享首选项上保存一些字符串数组,然后才能获取它们.我试过这个:
prefsEditor.putString(PLAYLISTS, playlists.toString()); 播放列表的位置 String[]
得到:
playlist= myPrefs.getString(PLAYLISTS, "playlists");播放列表是一个String但它不起作用.
我怎样才能做到这一点 ?谁能帮我?
提前致谢.
我的代码是:
final String eulaKey = "mykey";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean hasBeenShown = prefs.getBoolean(eulaKey, false);
Run Code Online (Sandbox Code Playgroud)
始终根据操作系统版本返回不同的值.在2.2,2.3.4,3.2,4.0.3中测试 - 返回正确的值.但对于带有CianogenMod 7.1的2.3.7设备Zte刀片 - 结果总是错误的.我想getBoolean的默认值.
这是编写boolean的代码:
final String eulaKey = "mykey";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(eulaKey, true);
editor.commit();
Run Code Online (Sandbox Code Playgroud)
有人有任何想法吗?
更新:将我当前的代码与我之前的代码版本进行比较 - 代码没有区别.唯一不同的是清单:代码工作正常minVersion = 8和targetVersion = 8现在我正在编译minversion = 8和target = 13 /因为Admob /.也许有些API改变了,但我没有发现这一点.
解决方案: - 从快捷方式启动应用程序,从菜单中为我提供不同的DefaultSharedPreferences.从我的代码中删除DefaultSharedPreferences后 - 它完美无缺.我不能只说:人们不做捷径,所以我不得不改变代码.
我需要SharedPreferences在android中保存几个日期并检索它.我正在使用构建提醒应用程序AlarmManager,我需要保存未来日期列表.它必须能够以毫秒为单位进行检索.首先,我想要计算今天时间和未来时间之间的时间,并以共享偏好存储.但是这个方法不起作用,因为我需要使用它AlarmManager.
我使用多个SharedPreferences在我的应用程序中存储数据.许多活动都使用了一些偏好.
我知道SharedPreferences在内部由地图支持,用于快速读取访问,并在设置更改时写入SD卡.
我想知道如果很多活动访问共享首选项哪种方式更好:
如果我使用1.解决方案是否有每个活动的共享首选项对象?当活动被销毁时,共享首选项的内部地图是否会被销毁?
如果我使用2.解决方案只有一个实例,虽然我在每个活动中调用getSharedPreferences?只要应用程序还活着,内部映射是否会在内存中?
希望有人知道Android如何在内部处理它.