Guardar en SharedPreferences Callback -- android campo con sharedpreferences campo con listener campo con android-sharedpreferences camp Relacionados El problema

save in SharedPreferences Callback


1
vote

problema

Español

Después del botón, necesito esperar hasta que se almacene, se almacenará en SharedPreferences y luego pasar a la siguiente actividad. Intento usar SharedPreferences.OnSharedPreferenceChangeListener() pero no funciona correctamente.

Mapactivity

  button.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 if (currentPosition != null ) {                     SharedPreferences preferences = PreferenceHelper.getPreferences(MapActivity.this);                     SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {                         @Override                         public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {                            Log.i(TAG,"key "+key);                             Intent i = new Intent(MapActivity.this, MainActivity.class);                             i.putExtra("coordinates", currentPosition);                             i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);                             startActivity(i);                         }                     };                    preferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener);                     PreferenceHelper.saveLocation(MapActivity.this,currentPosition);                 }             }         });   

preferenceshelper

   public class PreferenceHelper {                 public static SharedPreferences appPreference;                   public static SharedPreferences getPreferences(Context context){                  return  context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_PRIVATE);             }                  public static void saveLocation(Context context,LatLng location){                     appPreference=context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_PRIVATE);                 SharedPreferences.Editor editor = appPreference.edit();                 editor.putFloat(CURRENT_LOCATION_X, (float) location.latitude).apply();                 editor.putFloat(CURRENT_LOCATION_Y, (float) location.longitude).apply();                 editor.commit();             }              }   
Original en ingles

After button click I need to wait till some information will be stored in SharedPreferences and then move on into the next activity. I try to use SharedPreferences.OnSharedPreferenceChangeListener() but it isn't work properly.

MapActivity

button.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 if (currentPosition != null ) {                     SharedPreferences preferences = PreferenceHelper.getPreferences(MapActivity.this);                     SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {                         @Override                         public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {                            Log.i(TAG,"key "+key);                             Intent i = new Intent(MapActivity.this, MainActivity.class);                             i.putExtra("coordinates", currentPosition);                             i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);                             startActivity(i);                         }                     };                    preferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener);                     PreferenceHelper.saveLocation(MapActivity.this,currentPosition);                 }             }         }); 

PreferencesHelper

 public class PreferenceHelper {                 public static SharedPreferences appPreference;                   public static SharedPreferences getPreferences(Context context){                  return  context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_PRIVATE);             }                  public static void saveLocation(Context context,LatLng location){                     appPreference=context.getSharedPreferences(PREFERENCES_NAME,Context.MODE_PRIVATE);                 SharedPreferences.Editor editor = appPreference.edit();                 editor.putFloat(CURRENT_LOCATION_X, (float) location.latitude).apply();                 editor.putFloat(CURRENT_LOCATION_Y, (float) location.longitude).apply();                 editor.commit();             }              } 
           
   
   

Lista de respuestas

1
 
vote

Comprometer los cambios es algo que sucede en el hilo principal ... No necesita un OnsharedPreferenceChangelistedor. El cambio de que el oyente es útil cuando desea que se le notifique sobre los cambios en sus preferencias compartidas que se cometieron de otros componentes de su aplicación ... no es el que cometió los cambios. Solo hacer:

  index_range = 3 [''.join([input_string[j] for j in range(i, i+index_range)]) for i in range(0,len(input_string)-index_range+1)] 5  
 

Commiting changes is something that happens in the main thread...You don't need a OnSharedPreferenceChangeListener. the change listener is useful when you want to be notified about changes in your shared preferences that were commited from other components of your application...not the one that commited the changes. Just do:

prefs.edit().putWhatever().commit(); startActivity(new Intent(....)); 
 
 
   
   

Relacionados problema

-2  El valor de preferencia compartido devuelve vacío  ( Shared preference value returns empty ) 
Estoy recuperando el valor del servidor y el guardado para compartir la preferencia y recuperarlo en cadena, pero el valor está vacío, puede cualquiera decirm...

0  Preferencias compartidas guardar y recuperar datos  ( Shared preferences save and retrieve data ) 
Estoy usando preferencias compartidas para guardar datos de un autocompleTetTextView. Cuando el usuario escribe algo en este autocompletoTextView, puede hacer...

0  Cómo usar la administración de la sesión (usando la preferencia compartida) en una actividad de Android (diferente actividad para una cuenta diferente)  ( How to use session management using shared preference in more then one android ) 
Quiero crear una administración de sesión en Android para obtener más que uno activity . Leí la administración de sesión en este sitio http: //www.android...

22  Livedata con preferencias compartidas  ( Livedata with shared preferences ) 
Tengo una pantalla de configuración donde estoy configurando algunos valores. Cuando establezco esos valores, se guarda en las preferencias compartidas y esto...

1  Tratando de guardar los datos en la fila de Vista de texto en la matriz de EditText de Reciclados (Fragmento)  ( Trying to save data in textview row in array from edittext of recyclerview frag ) 
Soy Newbie en Android y tratando de resolver 2 problemas aquí. Tengo un fragmento con reciclaje usando la biblioteca adicional (Reciclados de reciclaje) que...

3  Android SharedPreferences para archivos fuera del directorio shared_prefs  ( Android sharedpreferences for files outside the shared prefs directory ) 
Específicamente quiero crear un archivo de preferencias compartidas en el directorio getDefaultSharedPreferences3 , dentro de la cual se recomienda para apli...

-2  Por qué mi aplicación 'desafortunadamente, ABC se ha detenido'  ( Why my app unfortunately abc has stopped ) 
Editar inicio Perdón por arruinar mi código. Todos ustedes señalaron varios errores y todos ustedes son correctos. Pero lo que realmente sucedió es que mi c...

1  Cómo eliminar SharedPreferences cuando quito la aplicación en Android 6  ( How to remove sharedpreferences when i remove app on android 6 ) 
Cuando eliminé la aplicación de un dispositivo con métodos de eliminación estándar (arrastrar y soltar, por ejemplo), mi SharedPreferences no se limpia. ¿...

0  Android: Preferencias compartidas No se pueden almacenar valor en preferencias compartidas  ( Android shared preferences unable to store value in shared preferences ) 
Actualmente estoy trabajando en un proyecto en el que tengo que actualizar las preferencias compartidas dependiendo del widget Presionado, si el usuario presi...

0  Versión gratuita y pagada SharedPreferences  ( Free and paid version sharedpreferences ) 
Sólo una pregunta rápida ... Tengo una versión gratuita y pagada de una aplicación. Los datos del usuario se almacenan utilizando SharedPreferences. En este m...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos