【问题标题】:sharedPreferences is not working to between two fragment?sharedPreferences 在两个片段之间不起作用?
【发布时间】:2018-02-16 23:25:59
【问题描述】:

片段 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);

我想在两个片段之间传输数据但不工作

【问题讨论】:

标签: java android android-fragments sharedpreferences


【解决方案1】:

试试:

SharedPreferences sPrefs = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
String data= sPrefs.getString("name","No name defined");
emailId.setText(data);

【讨论】:

  • 您的设备中有权限存储吗?
【解决方案2】:

这不是它的工作原理。如果您在两个片段都在屏幕上时更新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 中实现一个接口,并从 Fragment 2 中的 Activity 调用一个公共方法。

docs

祝你好运,编码愉快!

【讨论】:

    【解决方案3】:

    答案:

    //设置偏好

    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", "");
    

    谢谢大家:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 2014-01-08
      • 1970-01-01
      相关资源
      最近更新 更多