2014-06-16 1 views
0

나는 this이라는 키워드가 현재 객체에 대한 참조임을 알고 있지만 안드로이드 애플리케이션에서 여러 인터페이스를 구현할 때 혼란 스럽습니다.Android에서 다중 인터페이스를 구현할 때 "this"키워드가

Ex. 다음과 같이 새 Button을 만듭니다.

public class Example extends Activity implements View.OnClickListener, View.OnTouchListener { 

@Override 
... 
// override OnClick and OnTouch 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // 'this' refer to context in Activity 
    Button button = new Button(this); 

    // 'this' refer to OnClickListener 
    button.setOnClickListener(this); 

    // 'this' refer to OnTouchListener 
    button.setOnTouchListener(this); 
} 

} 

프로그램에서 어떤 개체를 참조해야하는지 어떻게 알 수 있습니까?

OnClickListener 대신 new Button을 만들 때 프로그램에서 알고있는 활동을 매개 변수로 전달해야합니까?

감사합니다.

+0

'this'는 현재 개체를 나타냅니다. 그처럼 간단합니다. 확장/구현하는 각 유형마다 다른 객체가 없습니다. 모든 유형을 확장/구현하는 단일 객체가 있습니다. – awksp

+1

각 경우에 이것은 여전히 ​​현재 오브젝트입니다. implements 키워드는이 객체가 특정 메소드 호출에 응답 할 것이라고 말합니다. – panini

+0

좋은 질문이지만 실제로는 명확하지 않습니다. –

답변

1

thisExample을 말합니다.

은 여기에 쓴 관련하여 무엇을 :

// 'this' refer to context in Activity 
Button button = new Button(this); 

// 'this' refer to OnClickListener 
button.setOnClickListener(this); 

// 'this' refer to OnTouchListener 
button.setOnTouchListener(this); 

사실, 그들은 모두 Activity, OnClickListenerOnTouchListenerExample를 참조하십시오.

1

인터페이스를 구현하면 인터페이스를 구현하는 것이 객체 지향 프로그래밍의 주요 부분입니다. Car, 그리고 여러 인터페이스, Accelerate, Brake, Steer라는 클래스가 있다고 가정 해 보겠습니다. Car가 이러한 인터페이스를 구현할 때, Car가 그러한 인터페이스를 구현할 수 있음을 의미합니다. 그러면 myCar.brake() 또는 myCar.steer ("left")를 말할 수 있습니다. 또는 myCar.accelerate (10); myCar를 thisCar로 변경하거나 모든 자동차가 동일한 동작을 공유하기 때문에 간단하게 변경할 수 있습니다.

오라클은 정말 큰 지수이며, 안드로이드는 자바를 기반으로하기 때문에 꽤 괜찮은 참고 점입니다. http://docs.oracle.com/javase/tutorial/reallybigindex.html

관련 문제