2014-08-27 6 views
3

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

Любая идея, как решить эту проблему?

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

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

} 
+0

Передайте ссылку на экземпляр хостинговой деятельности как контекст фрагментации при его создании, например, через конструктор фрагмента, а затем используйте его методы. – user3455363

+0

@ user3455363 Поскольку я все еще новичок, я не совсем уверен, как это достичь. Поэтому мне нужно поставить 'final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences (this);' на мою хостинговую активность, а затем? Извините за мой глупый вопрос – sascha

+0

Создайте поле в вашем фрагменте ex. Контекст hostActivity; затем добавьте параметр в cunstructor того же типа - Context, а когда u вызовите новый PreferencesFragment из активности вместо аргумента типа Context используйте ключевое слово this – user3455363

ответ

7

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

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

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

+3

Спасибо, что сделал трюк для меня – sascha

+0

Awsome! Searched именно для этого !;) – 8m47x

Смежные вопросы