How to get a preference value in preference fragment

11,255

In onActivityCreated (It's the time when the activity is created) of your fragment class, you do

Context hostActivity = getActivity();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(hostActivity);

That's how you access the hostActivity from the attached fragment.

Share:
11,255
sascha
Author by

sascha

Updated on June 22, 2022

Comments

  • sascha
    sascha about 2 years

    I want to show the value of preferences in a custom preference screen. For this I need to get the values, in this case strings, within the preference fragment. In non fragments (activities) I get the values with e.g. final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); and get the string with String phonenumber = prefs.getString("preference_name", null); but in the preference fragment getDefaultSharedPreferences is not applicable for preference fragment.

    Any idea how to solve this?

    Here's my code snippet:

    public class PreferencesFragment extends PreferenceFragment implements
        OnSharedPreferenceChangeListener {
    
    TextView tvusername, tvphonenumber;     
    
    @Override
       public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.preferences);
         getPreferenceScreen().getSharedPreferences()
                .registerOnSharedPreferenceChangeListener(this);
    
         final SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);
    
    
        // entering preference phonenumber in text view
                String phonenumber = prefs.getString("phonenumber", null);
                ;
                tvphonenumber.setText(phonenumber);
    
        // entering preference username in text view
                String username = prefs.getString("username", null);
                ;
                tvusername.setText(username);
    
    }
    
  • Tomblarom
    Tomblarom about 9 years
    Awsome! Searched exactly for this! ;)