Как получить значение предпочтения в preference fragment


Я хочу показать значение предпочтений на экране пользовательских предпочтений. Для этого мне нужно получить значения, в данном случае строки, в пределах фрагмента предпочтения. В non fragments (activities) я получаю значения, например, final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); и получаю строку с String phonenumber = prefs.getString("preference_name", null);, но в preference fragment getDefaultSharedPreferences не применяется для preference fragment.

Есть идеи, как это решить?

Вот мой фрагмент кода:

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);

}
1 3

1 ответ:

В onActivityCreated (это время, когда создается действие) вашего класса фрагментов, вы делаете

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

Именно так вы получаете доступ к hostActivity из прикрепленного фрагмента.