2012-07-30 4 views
2

지금은 PreferenceActivity와 PreferenceFragment가 있습니다. 액티비티는 정의 된 onBuildHeaders를 가지며, preference-headers의 루트 객체를 가진 XML 파일을로드 한 다음 헤더 인 여러 하위 객체를로드합니다. 각 헤더는 PreferenceFragment와 화면, 카테고리 및 기본 설정을 포함하는 XML 파일을 가리 킵니다.Android의 다중 계층 환경 설정?

이 시스템은 2 층 깊이로만 갈뿐입니다. 왼쪽 패널에는 헤더가 있고 그 헤더의 모든 것은 오른쪽 패널의 단일 목록에 있습니다. 일부 헤더에는 12 개 정도의 옵션 만 있으므로 제대로 작동합니다. 다른 헤더의 경우 스크롤 및 스캔, 장치로드 (상당히 두드리기와 열림 사이에 눈에 띄는 지연이 있습니다) 등 압도적 인 100 개 이상의 환경 설정이 있습니다.

어떤 방식 으로든 여러 계층을 가질 수 있습니까? 왼쪽에있는 사용자는 환경 설정이 실제로 저장되는 수준에 도달 할 때까지 헤더를 통해 사용자가 "드릴 다운"할 수 있습니다 (대부분 iOS에서 들었던 용어, IDK는 안드로이드와 용어가 공통적 인 것입니다). 오른쪽 패널에 그 디스플레이가 있습니까?

내 자신의 시스템을 완벽하게 작성하는 것은 가능하지만 시간이 많이 소요되는 것처럼 보입니다. 누군가 나를 위해 3 또는 4 단계 드릴 다운 환경 설정을 구현하는 API가 내장되어 있음을 알고 싶습니다.

누구든지 묻기 전에 예, 저는이 많은 기본 설정 (~ 500)을 가져야합니다. 나는 기본 설정 메뉴를 작성하고 항목 목록을 제공 받았다. (3 또는 4 티어로 쉽게 분류 할 수있다.)

+0

500에는 많은 환경 설정이있는 것으로 보입니다. 왜 더 작은 그룹의 기본 설정을 해제하고 현재 시스템을 사용하지 않는 것이 좋습니까? – Luksprog

+0

상위 항목은 "일반", "개인 설정", "데이터 수집", "그래프", "구성"및 "정보"입니다. 구성은 실제로 분류해야합니다. 여기에는 300 개가 넘는 환경 설정이 포함되어 있으며 ~ 20 개 카테고리로 분류 할 수 있습니다. 20 가지 범주를 상위 목록에 추가 할 수는 있지만 사실은 "일반", "개인 설정", "데이터 수집", "그래프", 20 가지 "구성 (이름)", 및 "정보". 오히려 사용자가 "Configure"를 선택한 다음 구성 할 수있는 것들의 목록을보고 각각에 대한 기본 설정을 지정합니다. – ArtOfWarfare

+0

앱의 설정 부분은 사용자를 압도 할 무언가가 아닌 단순한 것이어야합니다 (정확히 말해서 gazillion 옵션 중에서 선택해야 할 때 일어날 일). 이름을 구성 (이름)으로 지정할 필요가 없습니다. 그룹화 된 특정 설정에 대표 이름 만 사용하면됩니다. 당신이 당신의 처음 목표를 주장한다면, 나는 평범한 활동을하고 수준과 함께 원하는대로 그것을 만들 것입니다. – Luksprog

답변

2

이것은 실제로 매우 쉽다. 루트 헤더가 열리는 XML 파일에서 Preference 항목을 추가하고 android : fragment를 PreferencesFragment 클래스로 설정했습니다. 내 전체 시스템의 작동 방식을 명확히하기 위해 내가 가진 :

public class MyPreferencesActivity extends PreferenceActivity { 
    @Override 
    public void onBuildHeaders(List<Header> targer) { 
     loadHeadersFromResource(R.xml.preference_headers, target); 
    } 

preference_headers은 다음과 같습니다

public class MyPreferenceFragment extends PreferenceFragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     String name = getArguments().getString("resource"); 
     int res = getActivity().getResources().getIdentifier(name, "xml", getActivity().getPackageName()); 
     addPreferencesFromResource(res); 

그리고 마지막으로, 내 환경 설정 파일의 모습을 :

<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" > 
    <header android:fragment="com.my.androidapp.MyPreferencesFragment" title="General Category > 
     <extra android:name="resource" android:value="preferences_general" /> 
    </header> 
    <header... one per category, different titles and extra values for each. 
</preference-headers> 

MyPreferenceFragment은 다음과 같습니다 이렇게 :

<PreferenceScreen blah...> 
    <Preference android:fragment="com.my.androidapp.MyPreferenceFragment" android:title="Drill Down!"> 
     <extra android:name="resource" android:value="preferences_subgeneral" /> 
    </Preference> 
    <Preference... whatever I want... I can use ordinary preferences or any number of items that can be selected to drill down further still. 
</PreferenceScreen> 

다른 사람들, 특히 엄청난 선호도를 가진 다른 사람들에게 도움이되기를 바랍니다.

+0

내 앱에서 다중 계층 설정을 원하기 때문에 현재 막혀 있습니다. 물론 당신이 제안한 것처럼 그것을 할 수도 있지만 제 경우에는 태블릿에서 응용 프로그램을 열면 왼쪽에 내 최상위 설정이 표시되고 오른쪽에는 선택한 최상위 항목에 대한 세부 설정이 표시됩니다. 이제 세 번째 수준의 설정을 열도록 항목을 선택하면 전체 화면으로 열리고 ActionBar는 사라집니다. 분할 창의 오른쪽 내용을 바꾸거나 적어도 ActionBar를 표시하는 방법이 있습니까? 아니면 안드로이드 디자인 룰이 완전히 뒤떨어 졌습니까? : / – xxtesaxx

관련 문제