SharedPreferencies имеют разные значения для одного и того же ключа - PullRequest
0 голосов
/ 04 мая 2020

У меня проблемы с использованием 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 обо всех фрагментах и ​​действиях, которые я Что за приложение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...