我想在自定义首选项屏幕中显示首选项的值。为此,我需要在首选项片段中获取值,在这种情况下,字符串。在非片段(活动)中,我用例如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);
}
将引用作为上下文的主机活动实例传递给您,例如,通过片段构造函数创建片段,然后使用其方法。 – user3455363 2014-08-27 16:20:25
@ user3455363由于我仍然是一个newby我不确定如何实现这一点。所以我必须将'最后的SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);'放到我的托管活动中,然后呢?对不起,我的愚蠢问题 – sascha 2014-08-27 16:31:15
在你的片段前创建字段。上下文hostActivity;然后将参数添加到相同类型的cunstructor - 上下文,并且当你从活动中调用新的PreferencesFragment来代替类型的参数Context use关键字this – user3455363 2014-08-27 16:35:13