2011-12-05 2 views
0


사용자의 위치를 ​​사용하는 앱이 있습니다. 사용자가 설치 후 앱을 처음 열 때 대화 상자가 뜨거나 사용자가 위치 기반 서비스를 사용하려고 할 때 대화 상자가 표시됩니다 (아래 그림 참조). 사용자 위치 사용은 사용자가 "금지"함). 사용자가 자신의 취향을 전환 할 수있는
dialog

Android의 SharedPreferences에서 값을 변경하면 환경 설정 화면의 체크 박스 값이 업데이트됩니다.

는 또한 PreferenceActivity에 기본 설정 항목 (체크 박스) (아래 그림)를 사용합니다. prefs item


은 내가 체크 박스 값이 키 "locationPermission"로 대화 선택에 따라 자동으로 변화가 예상했던

public void onClick(DialogInterface dialog, int id) { sharedPrefs =getSharedPreferences("prefs",MODE_WORLD_WRITEABLE); Editor editor = sharedPrefs.edit(); editor.putBoolean("locationPermission", true); editor.commit();
}

이 코드를 사용할 수있는 sharedpreference의 값을 변경하려면 보유 값을 체크 박스에 입력하십시오. 그러나 그렇지 않습니다.

어떻게 대화 상자 (그림 1) 선택을 확인란 값 (그림 2)에 매핑합니까?

답변

4

문제가

sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

대신
I '가 addPreferencesFromResource (R.xml.prefs)라고 한

sharedPrefs = getSharedPreferences("prefs", MODE_WORLD_WRITEABLE);

1

PreferenceActivityonCreate에서 addPreferencesFromResource으로 전화를 걸어 UI가 환경 설정에서 채워지도록 할 수 있습니다. 또한 CheckBoxPreference의 XML 정의에 android:persistent-"true"이 있는지 확인해야 할 수 있습니다.

+0

'은'onCreate' 방법에 사용함으로써 해결했다 내 'PreferenceActivity'의. 나는 이제 android : persistent = "true"를 추가했다. 돕지 않아. 대화 상자의 선택 사항이 "환경 설정 화면"에 반영되지 않습니다. – Gadenkan