У меня проблемы с использованием SharedPreferences в приложении Android, и мне нужно прояснить его.
Чтобы избежать проблем, я создал отдельный класс для всех материалов, касающихся SharedPreferences, которые будут использоваться в app.
Это класс:
public class SharedPreferencesClasMiPaciente {
SharedPreferences prefs;
Context context;
private static String PREFS = "MiPaciente";
public static SharedPreferences getPrefs(Context context){
return context.getSharedPreferences(PREFS,Context.MODE_PRIVATE);
}
public static void insertData(Context context,String key,String value){
SharedPreferences.Editor editor=getPrefs(context).edit();
editor.putString(key,value);
editor.commit();
}
public static void insertDataInt(Context context,String key,Integer value){
SharedPreferences.Editor editor=getPrefs(context).edit();
editor.putInt(key,value);
editor.commit();
}
public static void insertDataLong(Context context,String key,Long value){
SharedPreferences.Editor editor=getPrefs(context).edit();
editor.putLong(key,value);
editor.commit();
}
public static void insertStringSet(Context context,String key,Set<String> value){
getPrefs(context).edit().putStringSet(key,value).commit();
}
public static String retriveData(Context context,String key){
return getPrefs(context).getString(key,"no hay datos");
}
public static int retriveDataInt(Context context,String key){
return getPrefs(context).getInt(key,0);
}
public static long retriveDataLong(Context context,String key){
return getPrefs(context).getLong(key,0);
}
public static Set<String> getStringSet(Context context, String key){
return getPrefs(context).getStringSet(key,null);
}
public static void deleteData(Context context,String key){
SharedPreferences.Editor editor=getPrefs(context).edit();
editor.remove(key);
editor.commit();
}
}
Я пытаюсь вызывать этот класс каждый раз, когда мне нужно получить или вставить новые данные SharedPreferences.
На данный момент, чтобы извлекать данные внутри фрагмента. Я использую этот код:
hayFotos = SharedPreferencesClasMiPaciente.retriveDataInt(getContext(),"hayFotos");
Для вставки данных внутри фрагмента я использую этот код:
SharedPreferencesClasMiPaciente.insertData(getContext(),"codigo_exploracion_actual",cod_exploracion);
Для извлечения данных в операции, Я использую этот код:
hayFotos = SharedPreferencesClasMiPaciente.retriveDataInt(this,"hayFotos");
Чтобы вставить данные в активность, я использую этот код:
SharedPreferencesClasMiPaciente.insertDataInt(getApplicationContext(),"hayFotos",1);
Этот способ работает, но не всегда, есть другой фрагмент, где используя те же методы, он получает другое значение для одного и того же ключа:
hayFotos = SharedPreferencesClasMiPaciente.retriveDataInt(getContext(),"hayFotos");
Log.d("test shared","test shared hay fotos "+hayFotos);
В этом случае я всегда получаю значение 0 для ключа "hayFotos".
Есть ли способ получить данные SharedPreferences обо всех фрагментах и действиях, которые я Что за приложение?