Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SharedReferences在两个片段之间不起作用?_Java_Android_Android Fragments_Sharedpreferences - Fatal编程技术网

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

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

片段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);
我想在两个片段之间传输数据,但不工作

尝试:

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

谢谢大家:)

所以数据返回错误?尝试使用简单的片段数据传输方式-设备中是否有权限存储?