2012-03-11 4 views
1

를 호출하는 방법을 전화, 내가 전화 :안드로이드 : 환경 설정 화면에 대한 사용자의 요구에, 내 활동에서 활동

startActivity(new Intent(this, Preferences.class)); 

환경 설정 클래스는 다음과 같이 정의된다 :

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener { 
    ... 
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 
     ... 
    } 

} 

내가 구현해야 Preferences 클래스의 OnSharedPreferenceChangeListener는 예를 들어 특정 선택에 따라 기본 설정 항목을 비활성화 할 수 있기를 원하기 때문입니다. 하지만 기본 설정 변경에 반응하려면 기본 활동에 구현해야합니다.

불행히도 onSharedPreferenceChanged()는 내 기본 설정 클래스에서만 실행되며 내 주요 활동에서는 실행되지 않습니다. 어떻게 봇 활동에서 강제로 실행합니까?

또는 - 기본 활동의 onSharedPreferenceChanged()에서 내 기본 활동으로 onSharedPreferenceChanged()를 수동으로 호출하려면 어떻게해야합니까?

답변

2

, 당신의 환경 설정 변경 청취자를 등록 할 수 있습니다.

+0

감사합니다. 내 주요 활동에 이미 registerOnSharedPreferenceChangeListener()를했는데, 어떤 이유로 그것이 주석 처리되었습니다! 당신의 propmtness 주셔서 감사합니다 ... – MarcoS

0

두 가지 기능 모두에서 일부 기능을 액세스 할 수있게하려면이 코드를 어디에서나 호출 할 수있는 정적 메서드에 포함시켜 가장 좋습니다. Android 액티비티는 분리되어 있으므로 한 액티비티에서 다른 액티비티 인스턴스에 실제로 액세스 할 필요가 없습니다.

SharedPreferences prefs = PreferenceManager 
    .getDefaultSharedPreferences(this); 
prefs.registerOnSharedPreferenceChangeListener(this); 

을하고 자신의 onSharedPreferenceChanged 방법 당신은 당신의 활동에 SharedPreferences.OnSharedPreferenceChangeListener를 구현하는 것이 : 당신의 주요 활동에

1

글쎄, 현재 '활성'상태가 아닌 활동의 환경 설정 변경을 감시하는 데는 의미가 없습니다. onResume, onRestart 등 주 활동의주기 관리 이벤트를 처리해야합니다.

관련 문제