改變監聽器,我有以下爲我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