본문 바로가기
+)기록/과제

정리사항 69 - <Preference /> 설정 항목 클릭 이벤트(setOnPreferenceClickListener, public boolean onPreferenceTreeClick)

by AppJinny 2023. 6. 9.

*<Preference /> 클릭 이벤트(setOnPreferenceClickListener, public boolean onPreferenceTreeClick) 

-Android의 Preference 화면에서 사용자가 환경 설정 항목을 클릭할 때 호출되는 이벤트 처리 방법

 

-public boolean onPreferenceTreeClick: (적용)

onPreferenceTreeClick는 Preference 화면 전체에 대한 클릭 이벤트를 처리하는 메서드입니다.
PreferenceFragment나 PreferenceActivity에서 오버라이드하여 사용합니다.
클릭 이벤트가 발생한 Preference 요소의 키(Key)를 가져와서 처리할 수 있습니다.
여러 개의 Preference 요소가 있을 경우에도 하나의 메서드에서 모든 클릭 이벤트를 처리할 수 있으므로 코드 중복을 방지할 수 있습니다.
효율성 면에서는 public boolean onPreferenceTreeClick가 더 효율적입니다. 

    //비밀번호 변경 다이얼로그
    @Override
    public boolean onPreferenceTreeClick(@NonNull Preference preference) {

        String setPasswordKey = preference.getKey();

        if (setPasswordKey.equals("setPassword")) setCustomDialogPw();

        return false;
    }//onPreferenceTreeClick

 


-setOnPreferenceClickListener:

setOnPreferenceClickListener는 개별적인 Preference 요소에 대해 클릭 이벤트를 처리하는 메서드입니다.
개별 Preference 요소마다 setOnPreferenceClickListener를 호출하여 클릭 이벤트를 처리할 수 있습니다.
일반적으로 사용자가 특정 Preference를 클릭할 때 추가 작업을 수행하고자 할 때 유용합니다.
여러 개의 Preference 요소가 있을 경우 각 Preference에 대해 개별적으로 설정해야 하므로 코드의 중복이 발생할 수 있습니다.

Preference pa;
pa = findPreference("setPassword");
pa.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
	@Override
	public boolean onPreferenceClick(@NonNull Preference preference) {
		setCustomDialogPw();
		return false;
}
	});

 

-setOnPreferenceClickListener는 각 Preference 요소에 대해 개별적으로 설정되어야 하므로, 여러 개의 Preference가 있는 경우 중복된 코드가 발생할 수 있습니다. 이는 유지보수가 어렵고 코드의 가독성을 해칠 수 있습니다.

반면 public boolean onPreferenceTreeClick는 Preference 화면 전체에서 클릭 이벤트를 처리하므로, 하나의 메서드에서 모든 클릭 이벤트를 처리할 수 있습니다. 이는 코드의 중복을 피하고 가독성을 높일 수 있습니다.
따라서 여러 개의 Preference 요소를 처리해야하는 경우, public boolean onPreferenceTreeClick를 사용하여 코드를 간결하게 유지하고 효율적인 이벤트 처리를 할 수 있습니다.