點擊按鈕後,我需要等到某些信息將被存儲在SharedPreferences
,然後繼續下一個活動。我嘗試使用SharedPreferences.OnSharedPreferenceChangeListener()
,但它無法正常工作。保存在SharedPreferences回調
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你試着通過在SharedPreferences.OnSharedPreferenceChangeListener的頂部提到PreferenceHelper.saveLocatio? – Bahu
是的,我嘗試這種方式 – Expiredmind