Я использую SharedPreferences по всему своему приложению.
Я определяю их два типа. Один называется:
public static String MISDATOS= "MisDatos";
SharedPreferences prefs2 = getActivity().getSharedPreferences(MISDATOS, Context.MODE_PRIVATE);
, а другой называется:
public static String MIPACIENTE= "MiPaciente";
SharedPreferences prefs3 = getActivity().getSharedPreferences(MIPACIENTE, Context.MODE_PRIVATE);
В приложении имеется последовательность фрагментов, которые работают как длинная форма, используемая пользователем приложения для представления. несколько сведений.
Я обнаружил проблему, которая в настоящее время сводит меня с ума.
Есть фрагмент 1, фрагмент 2 .... фрагмент 10.
мою проблему легче понять, я приведу пример.
Существует один из элементов sharepreferences, который называется:
Integer hayFotos = prefs3.getInt("hayFotos",0);
Чтобы следовать последовательности, при запуске приложения ее значение равно 0
При первом запуске фрагмента 1 его значение, очевидно, равно 0.
Во фрагменте 1 пользователь делает снимок или загружает изображение из галереи, после чего этот фрагмент обновляет значение "hayFotos". 1. 1. 1024 *
Затем вызывается фрагмент 2.
Я проверил, что при первом запуске фрагмента 2 значение «hayFotos» равно 1, как и должно быть.
На Фрагменте 2 пользователь делает еще одну фотографию, и значение обновляется до 2, оно работает. * 1 030 *
Для фрагмента 3 это значение равно 2.
Для фрагмента 4 это значение равно 2.
Для фрагмента 5 значение снова равно 0.
Я проверил, что беру правильный ключ getSharedPreferences для каждого фрагмента, но фрагменты в последовательности после фрагмента 4 теряют свои значения для "hayFotos".
Я мог бы опубликовать здесь весь код, чтобы продемонстрировать, что нет ошибки в коде, который объясняет значение 0 для «hayFotos» после фрагмента 4, но я сначала спросил бы вас, есть ли известное объяснение или это, безусловно, ошибка в моем коде
РЕДАКТИРОВАТЬ:
Я собираюсь разместить здесь код и выходные данные отладчика, чтобы продемонстрировать мою проблему:
Код во фрагменте 1:
SharedPreferences prefs5 = getActivity().getSharedPreferences("MiPaciente", Context.MODE_PRIVATE);
Integer num_buscado = prefs5.getInt("hayFotos",0);
Log.d("Eva","Eva NE 1 "+num_buscado);
Вывод во фрагменте 1
2020-05-01 16:58:38.076 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 1 0
Код во фрагменте 2:
SharedPreferences prefs5 = getActivity().getSharedPreferences("MiPaciente", Context.MODE_PRIVATE);
Integer num_buscado = prefs5.getInt("hayFotos",0);
Log.d("Eva","Eva NE 2 "+num_buscado);
Вывод во фрагменте 2:
2020-05-01 16:58:38.076 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 1 0
2020-05-01 17:00:21.007 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 2 0
Я делаю снимок во фрагменте 2.
Код в Фрагмент 3:
SharedPreferences prefs5 = getActivity (). GetSharedPreferences ("MiPaci ente ", Context.MODE_PRIVATE); Integer num_buscado = prefs5.getInt ("hayFotos", 0); Log.d ("Eva", "Eva NE 3" + num_buscado);
Вывод во фрагменте 3:
2020-05-01 16:58:38.076 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 1 0
2020-05-01 17:00:21.007 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 2 0
2020-05-01 17:01:58.273 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 3 1
Код во фрагменте 4:
SharedPreferences prefs5 = getActivity().getSharedPreferences("MiPaciente", Context.MODE_PRIVATE);
Integer num_buscado = prefs5.getInt("hayFotos",0);
Log.d("Eva","Eva NE 4 "+num_buscado);
Вывод во фрагменте 4:
2020-05-01 16:58:38.076 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 1 0
2020-05-01 17:00:21.007 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 2 0
2020-05-01 17:01:58.273 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 3 1
2020-05-01 17:03:38.238 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 4 1
Код во фрагменте 5:
SharedPreferences prefs5 = getActivity().getSharedPreferences("MiPaciente", Context.MODE_PRIVATE);
Integer num_buscadoMiPaciente = prefs5.getInt("hayFotos",0);
Log.d("Eva","Eva NT 1 MiPaciente "+num_buscadoMiPaciente);
SharedPreferences prefs6 = getActivity().getSharedPreferences("MisDatos", Context.MODE_PRIVATE);
Integer num_buscadoMisDatos = prefs6.getInt("hayFotos",0);
Log.d("Eva","Eva NT 1 MisDatos "+num_buscadoMisDatos);
Вывод во фрагменте 5:
2020-05-01 16:58:38.076 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 1 0
2020-05-01 17:00:21.007 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 2 0
2020-05-01 17:01:58.273 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 3 1
2020-05-01 17:03:38.238 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 4 1
2020-05-01 17:04:59.547 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NE 1 1
2020-05-01 17:04:59.585 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NT 1 MiPaciente 0
2020-05-01 17:04:59.586 11621-11621/com.mpidesarrollo.capenergy D/Eva: Eva NT 1 MisDatos 0