片段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.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
String data= sPrefs.getString("name", "err");
emailId.setText(data);
我希望将数据传输到两个片段之间,但不能正常工作
答案 0 :(得分:0)
尝试:
SharedPreferences sPrefs = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
String data= sPrefs.getString("name","No name defined");
emailId.setText(data);
答案 1 :(得分:0)
这不是它的工作原理。如果您在屏幕上显示两个片段时更新SharedPreferences
...他们将如何知道偏好已更改。有两种方法可以轻松解决这个问题:
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)在父Activity
或Fragment
中实施界面,并从片段2中的Activity
调用公共方法。
请参阅docs
祝你好运,快乐的编码!
答案 2 :(得分:0)
答案:
//设置首选项
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", "");
谢谢大家:)