1

설정 용 헤더를 채우는 데 사용하는 preference_headers.xml 파일이 있습니다. 보유하고있는 sharedPreference를 반영하도록 헤더 요약을 변경하고 싶습니다. 나는 내 다른 조각에 대한 OnSharedPreferenceChangeListener를 사용하고 그것을 잘 작동하지만 사람들은 환경 설정 화면에서 조각, 그래서 이런 식으로 액세스 할 수 있습니다 ..프로그래밍 방식으로 머리글 요약 변경

SharedPreferences sp = getPreferenceScreen().getSharedPreferences(); 
     EditTextPreference editTextPref = (EditTextPreference) findPreference("pref_text"); 
     editTextPref 
       .setSummary(sp.getString("pref_text", "Set an email address")); 

을하지만, 나는 preference_headers의 요약을 편집 할 다른 활동의 의도 인 파일이므로 공유 환경 설정을 저장하기 위해 환경 설정 화면을 사용하고 있지 않습니다.

<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" > 

<header 
    android:key="snooze_pref" 
    android:summary="Default snooze is 10 minutes" 
    android:title="Snooze Timer" > 
    <intent 
     android:action="android.intent.action.VIEW" 
     android:targetClass="com.example.alarmvoltageservicev2.SnoozePicker" 
     android:targetPackage="com.example.alarmvoltageservicev2" /> 
</header> 

그렇다면 프로그래밍 방식으로 위의 헤더 요약을 어떻게 변경할 수 있습니까? 당신이 당신의 ListAdapter를 설정할 때

답변

0

당신은 Headers을 반복하여 프로그래밍 요약을 수정할 수 있습니다

@Override 
public void setListAdapter(ListAdapter adapter) 
{ 
    int i, count; 

    if (preferenceHeaders == null) 
    { 
     preferenceHeaders = new ArrayList<Header>(); 

     count = adapter.getCount(); 
     for (i = 0; i < count; ++i) 
     { 
      Header h = (Header) adapter.getItem(i); 

      if(h.id == R.id.SOME_HEADER_ID_FROM_XML) 
      { 
       h.summary = "<new summary at runtime>"; 
      } 
     } 
    } 

    super.setListAdapter(new PreferencesHeaderAdapter(this, preferenceHeaders)); 
} 
0

LoadHeadersFromResource를 호출 한 후에는 onBuildHeaders 방법의 재정의 (override)에, 클래스 PreferenceActivity을 확장하고 가정, 단순히 "대상"목록을 반복하여 onBuildHeaders으로 전달하십시오.

리스트는 요약 텍스트 및 기타 설정에 대한 액세스를 제공하는 Header 유형입니다.

(미안하지만 코드 예제를 제공 하겠지만 C# -monodroid로 작성했습니다.)

관련 문제