Android 앱의 환경 설정 화면을 처리하고 있습니다. 이전 값에 특정 값이있는 경우 항목을 비활성화 (회색으로 표시)하고 싶습니다.Android : 내 주요 활동에서 findPreference()를 어떻게 호출합니까?
MainActivity와 PreferencesActivity의 두 클래스를 구현했습니다. MainActivity에서
내가 할 :
public class MainActivity extends Activity implements OnSharedPreferenceChangeListener {
...
public void onCreate (Bundle savedInstanceState) {
...
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
sharedPrefs.registerOnSharedPreferenceChangeListener(this);
...
}
그런 다음 내 환경 설정은 사용자가 요청 될 때 :
startActivity(new Intent(this, PreferencesActivity.class));
그런 다음, MainActivity에서 기본 설정을 처리하기 위해, 내가 할 :
@Override
public void onSharedPreferenceChanged (SharedPreferences prefs, String key) {
if ("sport".equals(key)) {
sport = prefs.getString("sport", "");
ListPreference lp = findPreference("match_duration");
if (sport.equals(getString(R.string."sport_soccer"))) {
lp.setEnabled(false);
}
}
...
}
문제는 MainActivity에서 findPreference를 호출 할 수 없다는 것입니다 ("findPreference (String) 메서드는 정의되지 않았습니다. e 유형 MainActivity "...). 내 접근 방식이 잘못 되었습니까? Shoud 나는 PreferencesActivity에서 onSharedPreferenceChanged() 메서드를 구현합니까? 그렇다면 PreferencesActivity에서 MainActivity 속성을 어떻게 사용합니까?
문제를 해결하기 위해 수행 한 코드 변경 사항을 알려주십시오. 정확히 어떻게 구현했는지 모르겠습니다. – impossible