2012-06-13 2 views
0

나는 도시의 목록을 가지고 있고, 나는 사용자가 환경 설정에서 추가 할이 도시 중 하나를 선택할 수 있습니다합니다. 그것을하기 위해 그는 시티 액티비티 (CityActivity) (하나의 도시를 대표 함)를 열고 OptionMenu를 열고 "즐겨 찾기에 추가"를 선택합니다. 모든 도시에는 이름, ID 및 기타 필드가 여기에 흥미가 없습니다.동적으로 추가하거나 제거 CheckBoxPreferences (안드로이드)

사용자가 즐겨 찾기에 도시를 추가하는 경우 (optionsMenu => "즐겨 찾기에 추가"에 의해) PreferenceCategory "즐겨 찾기"에 체크 표시가 나타나기를 원합니다 (이미 내 PreferenceScreen에서 생성되었지만 기본적으로 비어 있음). 확인란을 선택했는지 여부에 상관없이 구체적인 치료 방법을 적용 할 것입니다 (문제가 아닙니다). 사용자가 다시 도시에 가서 선택하면

마지막으로, 나는 SO하지만 결코에 오랜 시간 동안 검색 사라해야하는 도시의 이름을 가진 checkBoxPreference ...

을 "즐겨 찾기에서 제거" 이 문제의 해결책을 찾았습니다. 아니면 이해하지 못했습니다.

내 전류 소스 :

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
android:key="appSettings" 
android:title="Préférences" > 

<PreferenceCategory android:title="Accueil" > 
    <ListPreference 
     android:defaultValue="6" 
     android:entries="@array/nbNewsTitles" 
     android:entryValues="@array/nbNewsValues" 
     android:key="nbNews" 
     android:summary="Définit le nombre de news à afficher sur l&apos;onglet d&apos;accueil" 
     android:title="Nombre de news" /> 
</PreferenceCategory> 
<PreferenceCategory android:title="Modèles" > 
    <ListPreference 
     android:entries="@array/quickTitles" 
     android:entryValues="@array/quickValues" 
     android:key="navigationRapide" 
     android:summary="Définit le nombre d&apos;échéances à sauter lors de la navigation rapide" 
     android:title="Navigation rapide" /> 
</PreferenceCategory> 
<PreferenceCategory android:title="Général" > 
    <CheckBoxPreference 
     android:defaultValue="false" 
     android:enabled="true" 
     android:key="doubleTapMenu" 
     android:summary="Affiche le menu lors d&apos;actions spécifiques sur l&apos;écran." 
     android:title="Magic Menu" /> 
</PreferenceCategory> 
<PreferenceCategory 
    android:key="favoris" 
    android:title="Prévisions par villes" > 
</PreferenceCategory> 

public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.settings); 

} 

답변

1

당신은 선택적으로 추가하고 preferenceScreen에서 CheckBoxPreference을 제거 할 수 있습니다.

IE

//please note that this is depreciated in new fragment based preference screens 
PreferenceScreen mPreferenceScreen = getPreferenceScreen(); 
mPreferenceScreen.remove(mPreferenceScreen.findPreferenec("thatPreferenceKey")); 

그런 다음 다음 CheckBoxPreference을 만드는 perferenceScreen에 추가 동적으로 추가합니다.

mPreferenceScreen.addPreference(yourCBP); 
+0

좋아. 나는이 방법은 내 PreferenceCategory에 CheckBoxPreference을 추가 할 알고,하지만 난 사용자가 (완전히 독립적 임) CityActivity의 마음에 드는에 도시를 추가 할 때 호출하는 방법을 모르겠어요. 메소드 addToFavorite는 "CityActivity"인 반면, 이러한 방법은 아마 내가 바보 해요,하지만 난 어떻게 해야할지하지 않습니다 ... 내 PreferenceActivity를에 ... 당신은 내가 생각하는 (선호 활동을 고수 할 경우에 잘 – QLag

+0

목록보기가 "더 적합 할 수 있습니다") 어떤 종류의 상점에 대한 귀하의 도시 정보를 공유하기를 원할 것입니다. 당신은 당신이 실행시 필요한 각 요소에 대해 하나 (저장소에서 읽기)에서 당신의 체크 박스 환경 설정을 만든 다음 활동 후 PreferenceScreen에 부착 PreferenceActivity를 초기화합니다. – Jug6ernaut

+0

좋아 덕분에, 사실 그것은 나에 부끄러운 ... 꽤 쉬웠다 : – QLag