sharedPreferences在两个片段之间不起作用?

时间:2018-02-16 23:26:00

标签: 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.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
String data= sPrefs.getString("name", "err");
emailId.setText(data);

我希望将数据传输到两个片段之间,但不能正常工作

3 个答案:

答案 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)在父ActivityFragment中实施界面,并从片段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", "");

谢谢大家:)