我想在自定義首選項屏幕中顯示首選項的值。爲此,我需要在首選項片段中獲取值,在這種情況下,字符串。在非片段(活動)中,我用例如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