TextView que obtiene valor de SharedPreferences no muestra nada, aunque debe haber valores predeterminados

Tengo un problema conSharedPreferences Eso es un poco raro.

Yo tengo unActivity que tiene unFragment en unViewPager. El fragmento muestra un icono y texto. Puede cambiar el icono (marca de verificación o cruz, la marca de verificación es predeterminada) y el texto que se muestra en este fragmento de otra actividad. Luego, los datos se transfieren a la Actividad del contenedor de fragmentos con una intención.

Ahora quiero guardar el texto y el ícono elegido, para que el fragmento se muestre con el mismo texto e ícono, incluso cuando cierre la aplicación y la reinicie más tarde.

Así que traté de lograr esto conSharedPreferences, pero cuando lo probé, mi fragmento no me mostró texto y el ícono falso, aunque tengo valores predeterminados establecidos y el ícono siempre es la cruz, sin importar lo que era antes, aunque el ícono predeterminado debería ser la marca de verificación.

Estoy guardando los valores enonCreateView() de mi Fragmento cuando se crea con los datos que el usuario ingresó en la actividad anterior.

Ahorro:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPref.edit();

            Bundle bundle = getArguments();

            String city = bundle.getString("city");
            String country = bundle.getString("country");
            int ok = bundle.getInt("ok");

            TextView cityText = (TextView) view.findViewById(R.id.city_name);
            TextView countryText = (TextView) view.findViewById(R.id.country_name);
            ImageView shownIcon = (ImageView) view.findViewById(R.id.ok_bad_icon);

            cityText.setText(city);
            countryText.setText(country);

            if(ok == 1){
             shownIcon.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.checkmark_icon, null));
            }else{
                shownIcon.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.bad_icon, null));
            }

            editor.putString("city", city);
            editor.putString("country", country);
            editor.putInt("okBad", ok);
            editor.putString("saved", "Yes");

            editor.apply();

Entonces, obtengo los valores enonCreate() de mi actividad que contiene el fragmento:

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();
String storedSave = sharedPref.getString("saved", "no");

    if (storedSave.equalsIgnoreCase("yes")){

    String storedCity = sharedPref.getString("city", "berlin");
    String storedCountry = sharedPref.getString("country", "germany");
    int storedOkBad = sharedPref.getInt("okBad", 1);

        Bundle extras = new Bundle();

        StatusFragment savedFragment = new StatusFragment();

        extras.putString("city", storedCity);
        extras.putString("country", storedCountry);
        extras.putInt("okBad", storedOkBad);

        savedFragment.setArguments(extras);

        mSectionsPagerAdapter.addFragment(savedFragment, extras.getString("city"));
    }

Busqué respuestas en diferentes preguntas aquí en stackoverflow, pero ninguna de ellas funcionó para mí, como:

No se puede obtener valor de las preferencias compartidas

Las preferencias compartidas se pierden después de apagar el dispositivo o matar la aplicación

Las preferencias compartidas restablecen los datos cuando la aplicación se cierra por la fuerza o el dispositivo se reinicia

SharedPreferences sigue obteniendo el valor predeterminado

Cómo usar SharedPreferences en Android para almacenar, buscar y editar valores

También probé conLog.w() yToast.makeText() para imprimir el valor de la ciudad, pero nunca se muestra nada, como si se omite por completo, pero ¿por qué tengo unFragment en miActivity entonces después de reiniciar cuando esto se omite y no se agrega?

¿Y tengo que usaredit().putString().apply() al editar o puedo simplemente agregar el valor coneditor.putString() incluso cuando ya existe?

Lo siento si tal vez sea algo trivial, pero no he trabajado mucho con Fragments y estoy usandoSharedPreferences la primera vez ahora

Estaría agradecido por cada respuesta útil.

Respuestas a la pregunta(4)

Su respuesta a la pregunta