Java SharedReferences在两个片段之间不起作用?
片段1:Java SharedReferences在两个片段之间不起作用?,java,android,android-fragments,sharedpreferences,Java,Android,Android Fragments,Sharedpreferences,片段1: SharedPreferences sPrefs = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sPrefs.edit(); editor.putString("name", "testnameJack"); editor.commit(); 片段2: SharedPreferences sPrefs = this.g
SharedPreferences sPrefs = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sPrefs.edit();
editor.putString("name", "testnameJack");
editor.commit();
片段2:
SharedPreferences sPrefs = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
String data= sPrefs.getString("name", "err");
emailId.setText(data);
我想在两个片段之间传输数据,但不工作尝试:
SharedPreferences sPrefs = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
String data= sPrefs.getString("name","No name defined");
emailId.setText(data);
这不是它的工作原理。如果在两个片段都在屏幕上时更新
SharedReferences
。。。他们怎么知道偏好已经改变了呢。有两种方法可以轻松解决此问题:
1) 在您试图更新的片段中的首选项中添加一个OnSharedPreferenceChangeListener
。当侦听器检测到更改时,您可以更改文本。在你的例子中,片段2。例如:
sPrefs.registerOnSharedPreferenceChangeListener(
new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// .. Check the key to see if its the one you are looking for then set the text
}
});
但不要忘记注销侦听器以避免泄漏
2) 在父活动
或片段
中实现一个接口,并从片段2中的活动
调用公共方法
看
祝你好运和快乐 回答:
//设置首选项
SharedPreferences myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor;
prefsEditor = myPrefs.edit();
//strVersionName->Any value to be stored
prefsEditor.putString("STOREDVALUE", strVersionName);
prefsEditor.commit();
//获得优先权
SharedPreferences myPrefs;
myPrefs = getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
String StoredValue=myPrefs.getString("STOREDVALUE", "");
谢谢大家:)所以数据返回错误?尝试使用简单的片段数据传输方式-设备中是否有权限存储?