Android SharedPreferences después de reiniciar el dispositivo

Mi Inglés muy, muy mala porque soy ruso. 🙂

En mi aplicación utilizo SharedPreferences para almacenar mis valores. Los datos se han almacenado en SharedPreferences , cuando la aplicación se está ejecutando y después de salir de ella. Y todo funciona bien hasta que reinicie mi dispositivo. Después de reiniciar no puedo utilizar SharedPreferences , y la aplicación no leer y escribir los datos de allí. Utilizo la función getPreferences(0) para obtener las preferencias de la carpeta de datos de la aplicación. También intenté utilizar el getSharedPreferences(myPref, MODE_PRIVATE) , pero el efecto es el mismo. Guarda sólo una solución – la aplicación de limpieza de datos después de reiniciar el dispositivo.

  favoriteButton = (ImageView) findViewById(R.id.favorite_button); SharedPreferences favorite = getSharedPreferences("Favorites", MODE_PRIVATE); if(favorite.getString(""+Loader.currentVideo.getTitle()+"", "") == "true") { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_selected)); } else { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_empty)); } favoriteButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { SharedPreferences favorite = getSharedPreferences("Favorites", MODE_PRIVATE); SharedPreferences.Editor editor = favorite.edit(); if(favorite.getString(""+Loader.currentVideo.getTitle()+"", "") == "true") { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_empty)); Loader.favoriteVideos.remove(Loader.currentVideo); editor.remove(""+Loader.currentVideo.getTitle()+""); } else { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_selected)); Loader.favoriteVideos.add(Loader.currentVideo); editor.putString(""+Loader.currentVideo.getTitle()+"", "true"); } editor.commit(); } }); 

Gracias a todos por su consejo! ¡Pero yo había resuelto este problema! Espero que esto ayude a alguien, aquí hay una solución.

Antes de solicitar un valor SharedPreferences, compruebe la disponibilidad de claves !!!

SharedPreferences sharedpreferences = getSharedPreferences ("SharedPreferences", MODE_PRIVATE); Sharedpreferences.contains ("clave") — clave de verificación!

  favoriteButton = (ImageView) findViewById(R.id.favorite_button); SharedPreferences favorite = getSharedPreferences("Favorites", MODE_PRIVATE); String tempFav = ""; if(favorite.contains(""+Loader.currentVideo.getTitle()+"")) { tempFav = favorite.getString(""+Loader.currentVideo.getTitle()+"", ""); } if(tempFav.equalsIgnoreCase("true")) { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_selected)); } else { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_empty)); } favoriteButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { SharedPreferences favorite = getSharedPreferences("Favorites", MODE_PRIVATE); SharedPreferences.Editor editor = favorite.edit(); String tempCFav = ""; if(favorite.contains(""+Loader.currentVideo.getTitle()+"")) { tempCFav = favorite.getString(""+Loader.currentVideo.getTitle()+"", ""); Log.d(Loader.currentVideo.getTitle()); Log.d(tempCFav); } if(tempCFav.equals("true")) { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_empty)); Loader.favoriteVideos.remove(Loader.currentVideo); editor.remove(""+Loader.currentVideo.getTitle()+""); } else { favoriteButton.setImageDrawable(getResources().getDrawable(R.drawable.fav_selected)); Loader.favoriteVideos.add(Loader.currentVideo); editor.putString(""+Loader.currentVideo.getTitle()+"", "true"); } editor.commit(); } }); 

El siguiente código debería funcionar para que usted pueda guardar las preferencias compartidas. La parte importante es edit.commit (); Si esto no funciona, entonces podría ser el teléfono que está utilizando tiene un comportamiento diferente como el fabricante del teléfono puede haber modificado algo ..

 private static final String PREFERENCES = "Preferences"; static protected SharedPreferences getSharedPreferences( Context context ) { return context.getSharedPreferences( PREFERENCES, Context.MODE_PRIVATE); } public void setString(String setting, String value) { SharedPreferences settings = getSharedPreferences( getApplicationContext() ); Editor edit = settings.edit(); edit.putString(setting, value); edit.commit(); } 

Pruebe con este enlace . Deberia de funcionar. Lo probé en mi dispositivo y funcionando bien. Trate de entenderlo y haga los cambios necesarios en su aplicación.

  • ¿Cómo leer las SharedPreferences de otra aplicación (el mismo ID de usuario)?
  • Compartido prefrence almacenado valor no funciona con android onCreate ()
  • Contexto de la aplicación SharedPreferences vs contexto de la actividad
  • SharedPreferences no se guardará si la aplicación se vuelve a abrir
  • Android SDK equivlent para viewWillAppear (iOS)?
  • Android Menu sólo funciona una vez por ejecución de aplicación
  • Manejo de varias instancias de appwidget
  • ¿Cuándo se creó por primera vez un archivo de preferencias compartidas?
  • Cuando una aplicación se mueve forzadamente a SD-Card, ¿dónde van SharedPreferences?
  • Ejecute el código una sola vez después de una instalación nueva, la preferencia compartida no es una solución.
  • Cómo cambiar mediante programación la imagen de fondo de una actividad de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.