Android 如何在首选项片段中获取首选项值

Android 如何在首选项片段中获取首选项值,android,android-fragments,preferences,Android,Android Fragments,Preferences,我想在自定义首选项屏幕中显示首选项的值。为此,我需要获取首选项片段中的值(在本例中为字符串)。在非片段(活动)中,我使用例如final SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this)获取值并使用string phonenumber=prefs.getString(“preference\u name”,null)获取字符串但在首选项片段中,GetDefaultSharedReferences不

我想在自定义首选项屏幕中显示首选项的值。为此,我需要获取首选项片段中的值(在本例中为字符串)。在非片段(活动)中,我使用例如
final SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this)获取值
并使用
string phonenumber=prefs.getString(“preference\u name”,null)获取字符串但在首选项片段中,
GetDefaultSharedReferences
不适用于首选项片段

你知道怎么解决这个问题吗

以下是我的代码片段:

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

}
在fragment类的onActivityCreated(即创建活动的时间)中,您可以

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

这就是从附加的片段访问hostActivity的方式。

在创建时,例如通过片段构造函数将对托管活动实例的引用作为上下文传递给片段,然后使用其方法。@user3455363因为我还是一个新手,我不确定如何实现这一点。所以我必须把
final-SharedPreferences-prefs=PreferenceManager.getDefaultSharedPreferences(这个)到我的托管活动,然后?很抱歉,我在你的片段ex.Context hostActivity中创建了一个愚蠢的问题字段;然后将参数添加到同一类型的cunstructor-Context中,当您从活动中调用新的PreferencesFragment来代替Context类型的参数时,请使用关键字this@user3455363我不明白:-(我确实向我的片段和
SharedReferences prefs=PreferenceManager.getDefaultSharedReferences(this);
添加了
private Context Preferences;
private SharedReferences prefs;
到名为Preferences的主机活动中,但我得到了一个空指针ExceptionAnswome!正是为此搜索的!;)