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.
- Cómo comprobar si existe o no el archivo SharedPreferences
- Cómo guardar un paquete completo en SharedPreferences
- Android: copiar / duplicar las preferencias compartidas
- Android: guardar el estado de la aplicación
- Cómo analizar ANR en sharedPreferences
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(); } });
- Android Preferences error, "String no se puede convertir en int"
- Obtener el error "no se puede resolver el método" al intentar implementar getSharedPreferences en Android Studio
- ¿Cómo puedo almacenar una Matriz de Integer en SharedPreferences en Android?
- SharedPreferences problemas con la cadena "ISO-8859-1"?
- Android: haz algo en actividad cuando cambian las preferencias
- SharedPreferences lee valores antiguos
- No se puede poner doble SharedPreferences
- OnSavedInstanceState vs. SharedPreferences
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.
- ¿Hay una manera de convertir una aplicación de Android en una aplicación de escritorio?
- ¿Cómo utilizar la biblioteca FreeType del sistema Android en código nativo?