2014-08-27 5 views
3

사용자 정의 기본 설정 화면에서 기본 설정 값을 표시하려고합니다. 이를 위해 우선 순위 조각 내에서 값 (이 경우 문자열)을 가져와야합니다. 비 조각 (활동)에서 나는 값을 예를 들어. final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);을 사용하고 String phonenumber = prefs.getString("preference_name", null);으로 문자열을 가져 오지 만 선호도 조각 getDefaultSharedPreferences은 기본 조각에 적용 할 수 없습니다.기본 설정 값에서 기본 설정 값을 얻는 방법

어떻게 해결할 수 있을까요?

여기 내 코드입니다 :

onActivityCreated 당신이에서 hostActivity에 액세스하는 방법은 당신이

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

을, 당신의 조각 클래스의 (그것은 활동이 작성된 시간)에서

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에 매개 변수를 추가합니다. - 컨텍스트 및 컨텍스트 유형의 인수 대신 activity에서 새 PreferencesFragment를 호출하면이 – user3455363

답변

7

첨부 된 조각.

+3

고마워, 저를 위해 속임수를했습니다. – sascha

+0

Awsome! Searched 이것을 위해 정확히!) – 8m47x