2011-11-17 2 views
2

나는 에 PreferenceCategories이 많이 정의되어 있습니다. 주어진 카테고리의 android:key가 있다면.프로그래밍 방식으로 스크롤 PreferenceActivity

이 범주로 Activity을 프로그래밍 방식으로 스크롤 할 수 있습니까?

PreferenceScreen screen = getPreferenceScreen(); 
int i; 
for(i = 0; i < screen.getPreferenceCount(); i++) { 
    String key = screen.getPreference(i).getKey(); 

    // be careful, because key will be null if no android:key is specified 
    // (as is often the case for PreferenceCategory elements) 
    if("myKey".equals(key)) 
     break; 
} 

// PreferenceActivity extends ListActivity, so the ListView is accessible... 
getListView().setSelection(i); 

안드로이드 SDK (14) 밖으로 테스트하고 그것을 잘 작동합니다 :

답변

4

이 같은 활동의 환경 설정을 통해 반복 할 수 있습니다.

인데도 불구하고 onCreate 또는 onResume 내부에서 getListView().setSelection(i)을 호출해도 아무런 효과가 없습니다. 활동이 끝나면 호출해야합니다.

getPreferenceCount() 메소드는 모든 PreferenceCategories와 중첩 된 기본 설정을 계산합니다. PreferenceScreens에서 무엇을하는지 확신 할 수는 없지만 약간의 실험을 통해 분명히 밝힐 수 있습니다.

3

나는 이것이 이전의 대답 된 질문이라는 것을 알고 있지만 모든 범주를 반복하는 것보다 나은 방법을 발견했다.

PreferenceCategory myCat = (PreferenceCategory) findPreference("myKey"); 
int position = myCat.getOrder(); 
getListView().setSelection(position); 
관련 문제