Home > Enterprise >  android studio save string shared preference, start activity and load the saved string
android studio save string shared preference, start activity and load the saved string

Time:01-13

I'm trying to save a string to shared preferences and then start an activity and retrieve it but doesn't work. What am I doing wrong?

First I set the shared preference key then I start the activity:

SharedPreferences.Editor editor =
                                getSharedPreferences("PaymentStatus",MODE_PRIVATE).edit();
editor.putString("payment_status","success");
editor.apply();
Intent i = new Intent(getBaseContext(), ProfileActivity.class);
startActivity(i);

and on the ProfileActivity class I trying to retrieve the key:

SharedPreferences prefs = getSharedPreferences("PaymentStatus",
                MODE_PRIVATE);
String payment_status = prefs.getString("payment_status", null);

if(payment_status == "success"){
    Log.i("payment status", "success");
}

I can't see the payment status success in the logcat.

CodePudding user response:

Each activity seems to have its own shared preference. You would have to possibly share a base activity or use the application context. Note how in the documentation under https://developer.android.com/training/data-storage/shared-preferences it references the current activity. Another possible error you are creating is comparing strings via == as this compares the refernece and not the value. Use .equals instead

CodePudding user response:

This is my experience in used SharedPreferens. Perhaps this approach will solve the problem:

public class UserData {

    UserData(MainActivity mainActivity){this.mainActivity = mainActivity;}

    private static UserData userData;

    private final MainActivity mainActivity;
    private SharedPreferences sPref;
    private SharedPreferences.Editor editor;
    final private String USER_ID = "user_id";

    public static void create(MainActivity activity) {
        if (userData == null) userData = new UserData(activity);
    }

    public static UserData getUserData() {
        return userData;
    }

    void createUser() {
        sPref = mainActivity.getSharedPreferences("UserData", Context.MODE_PRIVATE);
        editor = sPref.edit();
            // Если user id уже есть, выходим из метода
        if(sPref.contains(USER_ID)) return;
        editor.putString(USER_ID, createUserId());
        editor.apply();
        Toast.makeText(mainActivity,"UserId created", Toast.LENGTH_SHORT).show();
    }
        // id формируется на основе текущей даты и времени
    private String createUserId() {
        Date currentDate = new Date();
        DateFormat dateFormat = new SimpleDateFormat("ddMMyyyyHHmmss", Locale.getDefault());
        return dateFormat.format(currentDate);
    }

    public String getUserId() {
        return sPref.getString(USER_ID, "");
    }
}
  •  Tags:  
  • Related