改变监听器,我有以下为我onCreateView我的片段sharedPreferences片段中没有发射
public static final String sharedPreferences = "crmPrefFiles";
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View layout=inflater.inflate(R.layout.fragment_item_fragment1, container, false);
SharedPreferences prefs = getActivity().getSharedPreferences(sharedPrefefrences, 0);
SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
populatePage(layout);
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
return layout;
}
在使用该片段的喜好被编辑值通过Web服务调用抓住了活动。这就是我使用onchangeListener的原因。片段在编辑首选项之前创建。
final SharedPreferences settings = getSharedPreferences(sharedPreferences, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("FRAG_" + pageNum, record.getString("group"));
editor.commit(); //commit the changes
现在看来,问题与侦听器未检测到创建片段本身的活动中所做的更改有关。
承载分段的活动获取sharedpreferences的值并设置它们。然后这应该被捕获到片段本身中,然后调用另一种方法。出于某种原因,听众没有检测到这些变化。
当我输出在烤面包信息中编辑的偏好时,我得到的是不正确的值,当我回去并重新输入活动时它具有正确的值时,这告诉我它在创建片段后正在更新,但是由于某种原因,听众不会射击。
您可以在您尝试更改SharedPreferences值的位置添加代码吗? – pablobu
@pablobu补充。首选项在使用片段的活动中更新 – AlexF11