Nach dem Klicken auf die Schaltfläche muss ich warten, bis einige Informationen in SharedPreferences
gespeichert werden und dann in die nächste Aktivität weitergehen. Ich versuche, SharedPreferences.OnSharedPreferenceChangeListener()
zu verwenden, aber es funktioniert nicht richtig.Speichern in SharedPreferences Callback
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();
}
}
r u versucht, durch die PreferenceHelper.saveLocatio am oberen Rand der SharedPreferences.OnSharedPreferenceChangeListener zu erwähnen? – Bahu
Ja ich versuche so – Expiredmind