我想在自定义首选项屏幕中显示首选项的值。为此,我需要在首选项片段中获取值,在本例中为字符串。在非片段(活动)中,我得到的值如下: 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 :(得分:10)
在你的片段类的onActivityCreated(这是创建活动的时候),你做
Context hostActivity = getActivity();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(hostActivity);
这就是你从附加片段访问hostActivity的方法。