안드로이드앱을 만드는 도중 막히는 부분을 해결할 수 없어서 질문드립니다..
스위치의 true false 값에 따라 다른 Preference 의 enable 값을 변경시키고 싶은데 Bind 메소드 부분에서 findPreference 를 사용할 수가 없습니다.
onPreferenceChange 부분에서 넘겨받은 Preference가 SwitchPreference이고 SwitchPreference의 Object가 True라면 다른 Preference의 enable 속성을 false로 바꿔야 하는데 해결 방법을 모르겠습니다..
오버라이딩 된 onPreferenceCahnge 메소드에서 if문 2개로 구현을 하다가 막혀 있습니다..
public class SettingsActivity extends AppCompatPreferenceActivity {
private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
if (preference instanceof SwitchPreference) {
String strValue = value.toString();
if (strValue.equals("true")) {
Log.e("TAG", "onPreferenceChange:: " + strValue );
}
}
return true;
}// onPreferenceChange(Preference, Object)
};// OnPreferenceChangeListener()
private static void bindPreferenceSummaryToValue(Preference preference) {
preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
if (preference instanceof SwitchPreference) {
sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
PreferenceManager
.getDefaultSharedPreferences(preference.getContext())
.getBoolean(preference.getKey(), true));
} else {
sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
PreferenceManager
.getDefaultSharedPreferences(preference.getContext())
.getString(preference.getKey(), ""));
}
}// bindPreferenceSummaryToValue(Preference)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsPreferenceFragment()).commit();
setupActionBar();
}// onCreate(Bundle)
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class SettingsPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
Log.e("TAG", "SettingsPreferenceFragment::onCreate 작동함");
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_settings);
setHasOptionsMenu(true);
//bindPreferenceSummaryToValue(findPreference("example_text"));
bindPreferenceSummaryToValue(findPreference("start_map_switch"));
}// onCreate(Bundle)
@TargetApi(Build.VERSION_CODES.M)
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
Log.e("TAG", "onPreferenceTreeClick::" + preference.getKey());
return false;
}
}
}