안드로이드 에서 Delegate를 쓸수 있나요?


만약에 쓸수 있다면 간단한 예시쫌 주시면 감사하겠습니다

  • 2016년 06월 02일에 작성됨

조회수 356


1 답변


좋아요
1
싫어요
채택취소하기

일종의 Callback 개념이네요. Java의 interface를 구현해서 사용하면 됩니다. 가장 쉬운 예제인 setOnClickListener의 구조를 보면 이해가 될 거에요.

다음은 ClassB에서 넘어온 String s는 이 곳에서 콜백으로 넘어온 데이터를 한 번 더 처리해주는 간단한 예제입니다.


// 콜백 인터페이스
public interface CustomCallback {

    public void onCall(String s);

}

// 콜백 선언을 한 클래스
public class ClassB {

    CustomCallback mCallback;

    public ClassB(CustomCallback callback) {
        this.mCallback = callback;
    }

    public void callMe() {
        System.out.println("ClassB Call");
        if(mCallback !=null){
            String data = "original data";
            System.out.println(data);
            mCallback.onCall(data);
        }
    }

}

// 실제 실행 부분
ClassB b = new ClassB(new CustomCallback() { 

    @Override
    public void onCall(String s) {
        // 여기에서 콜백으로 넘어온 데이터 핸들링을 하게 됩니다. interface에서는 String을 넘겨주니깐 이 친구가 넘어오겠지요.
        System.out.println(s + "처리가 되었습니당.");
    }
});

b.callMe();

실행 하면

ClassB Call original data original data처리가 되었습니당.

이렇게 결과가 나오게 됩니다~

  • 2016년 06월 02일에 작성됨
    Android, iOS, Unity를 합니다

  • 단, 실제 안드로이드에서 Mainthread가 아닌 경우에는 runonui안에서 작동시켜야 탈이 없습니다    오유석   2016.6.3 10:45     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close