환경 설정이 변경되었는지 감지하는 방법은 무엇입니까?
PreferenceActivity를 확장하고 내 앱의 기본 설정 화면을 보여주는 클래스가 있습니다. 기본 설정이 변경되었는지 확인할 수 있습니까?
이것은 도움이 ...
기타 관련 게시물 : SharedPreferences.onSharedPreferenceChangeListener가 일관되게 호출되지 않음
public class PreferenceClass extends PreferenceActivity {
OnSharedPreferenceChangeListener listener;
public void onCreate(Bundle savedInstanceState) {
SharedPreferences prefs = this.getSharedPreferences("settings", 0);
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
int flag = 1;
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
super.onCreate(null);
addPreferencesFromResource(R.xml.settings);
}
}
하다
SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// your stuff here
}
};
당신의에서 PreferenceActivity, 즉 그것은 당신의 멤버 만들기 PreferenceActivity클래스와 할 다음 registerOnSharedPreferenceChangeListener(spChanged)에 PreferenceActivity.onCreate()방법.
그게 제가하는 일이고 저는 문제가 없습니다.
그렇지 않으면 결함이있는 리스너의 조건부 검사입니다. 코드를 게시하십시오.
편집하다:
게시 한 코드 prefs에서 전역 범위를 갖도록 클래스 멤버 변수를 만들어야 합니다.
해당 파일을 만들지 않았기 때문에 prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());대신 수행 getSharedPreferences하십시오.
파일을 만들려면 PreferenceManager. 를 얻으려면 PreferenceManager, 사용 Activity.getPreferenceManager().
당신의에 PreferenceActivity클래스의 구현 SharedPreferences.OnSharedPreferenceChangeListener인터페이스를. onSharedPreferenceChanged클래스에 필요한 메서드를 추가하고 onCreate.
여기에서 샘플 코드를 참조하십시오.
public class MyPreferences extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.fw_preferences); //deprecated
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// handle the preference change here
}
}
참고 URL : https://stackoverflow.com/questions/4997907/how-to-detect-if-changes-were-made-in-the-preferences
'Program Club' 카테고리의 다른 글
| 여러 프로젝트 및 구성에 Visual Studio 프로젝트 속성을 효과적으로 사용 (0) | 2020.11.04 |
|---|---|
| matplotlib에서 줄 바꿈이있는 텍스트 상자? (0) | 2020.11.04 |
| THREE.js에서 텍스처 사용 (0) | 2020.11.04 |
| RestTemplate을 사용할 때 내부 Jackson 매퍼를 어떻게 구성 할 수 있습니까? (0) | 2020.11.04 |
| cmd 파일에서 %와 %%의 차이점은 무엇입니까? (0) | 2020.11.04 |