0

I am having problems on using SharedPreferences in different activities and the XML file is no created (and I don't know why).

I'm using SharedPreferences in two activities:

  • Here is the first one, where I just need to read the file:

     TextView screenCurrency = findViewById(R.id.dollar);
    
    preferences = getSharedPreferences("UserPreference", Context.MODE_PRIVATE);
    
    if(preferences.contains("currency")){
    
        screenCurrency.setText(preferences.getString("currency","defect_currency"));
    
        if(preferences.getString("currency","defect_currency").equals("USD")){
    
            screenCurrency.setText("$");
    
        } else if(preferences.getString("currency","defect_currency").equals("EUR")){
    
            screenCurrency.setText("€");
    
        }
    } else {
    
        screenCurrency.setText("$");
    }
    
  • This one is the other activity, where I read user preferences and I need to save them and include them in SharedPreferences:

     //get user preferences
    Spinner spinnerCurrency = (Spinner) findViewById(R.id.spinnerCurrency);
    Spinner spinnerRefresh = (Spinner) findViewById(R.id.spinnerRefresh);
    
    currency = spinnerCurrency.getSelectedItem().toString();
    refresh = spinnerRefresh.getSelectedItem().toString();
    
    Button saveButton = findViewById(R.id.saveChangesButton);
    
    saveButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    
    
    
            preferences=getSharedPreferences("UserPreference", Context.MODE_PRIVATE);
    
            SharedPreferences.Editor editor = preferences.edit();
    
            editor.putString("currency",currency);
    
            editor.putString("refresh",refresh);
    
    
    
        }
    });
    

Anyone knows what is wrong?

nls97
  • 1
  • 1
  • see this : https://stackoverflow.com/questions/3624280/how-to-use-sharedpreferences-in-android-to-store-fetch-and-edit-values – chandani c patel Dec 29 '17 at 10:50
  • what are the values you are saving against variables name currency and refresh? – Abdul Waheed Dec 29 '17 at 10:51
  • I think you're missing editor.commit(); after putting values – Rafal Malek Dec 29 '17 at 10:52
  • Possible duplicate of [How to use SharedPreferences in Android to store, fetch and edit values](https://stackoverflow.com/questions/3624280/how-to-use-sharedpreferences-in-android-to-store-fetch-and-edit-values) – Dmitrii Z. Dec 29 '17 at 10:56

3 Answers3

0

change your code

   preferences = getSharedPreferences("UserPreference", Context.MODE_PRIVATE);
    String currency = preferences.getString("currency",null)
    if(currency.contains("currency")){
Kapil Parmar
  • 881
  • 8
  • 19
0

I think you're missing editor.commit(); after putting values

 //get user preferences
Spinner spinnerCurrency = (Spinner) findViewById(R.id.spinnerCurrency);
Spinner spinnerRefresh = (Spinner) findViewById(R.id.spinnerRefresh);

currency = spinnerCurrency.getSelectedItem().toString();
refresh = spinnerRefresh.getSelectedItem().toString();

Button saveButton = findViewById(R.id.saveChangesButton);

saveButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {



        preferences=getSharedPreferences("UserPreference", Context.MODE_PRIVATE);

        SharedPreferences.Editor editor = preferences.edit();

        editor.putString("currency",currency);

        editor.putString("refresh",refresh);

        editor.commit();


    }
});
Rafal Malek
  • 3,493
  • 1
  • 17
  • 18
0

If you are using sharedPreferences for activities then you must use SharedPreferences sharedPreferences = getSharedPreferences("myinfo", Context.MODE_PRIVATE);

dennisrufigill
  • 379
  • 1
  • 3
  • 14