Program Club

환경 설정이 변경되었는지 감지하는 방법은 무엇입니까?

proclub 2020. 11. 4. 20:59
반응형

환경 설정이 변경되었는지 감지하는 방법은 무엇입니까?


PreferenceActivity를 확장하고 내 앱의 기본 설정 화면을 보여주는 클래스가 있습니다. 기본 설정이 변경되었는지 확인할 수 있습니까?

이것은 도움이 ...

http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html

기타 관련 게시물 : 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

반응형