2014-04-29 3 views
2

저는 Android와 java의 초보자입니다.이 코드 부분을 이해할 수 없습니다. 익명의 객체를 만드는 것이 좋을지도 모릅니다. 이 코드의 메커니즘을 이해할 수 없습니다. 제발 도와주세요.Android OnClickListener 메커니즘

btn.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 

    } 
}); 

답변

8

enter image description here

앞의 예에서 간단한에서 본 이벤트 모델은 매우 강력하고 유연하다. 임의의 수의 이벤트 수신기 객체는 모든 수의 이벤트 소스 객체에서 모든 종류의 이벤트를 수신 할 수 있습니다. 예를 들어, 프로그램은 이벤트 소스마다 하나의 리스너를 작성할 수 있습니다. 또는 프로그램은 모든 소스의 모든 이벤트에 대해 단일 리스너를 가질 수 있습니다. 프로그램은 단일 이벤트 소스에서 단일 종류의 이벤트에 대해 둘 이상의 리스너를 가질 수도 있습니다.

Java에는 이벤트 목록을위한 세 가지 메커니즘이 있습니다. 익명으로

1.

안드로이드 개발자가 종종 이벤트가 발생할 때 특정 동작에 대한 콜백을 등록 전문 청취자를 정의하는 익명의 내부 클래스를 사용 claases. 예를 들어 View 컨트롤에서 클릭을 수신하려면 개발자가 단일 매개 변수 인 View.OnClickListener 객체를 사용하는 setOnClickListener() 메서드를 호출해야합니다. 온 클릭 리스너

Button aButton = (Button) findViewById(R.id.MyButton); 
aButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // User clicked my button, do something here! 
      } 
}); 

2. 별도의 클래스를 다음과 같이 개발자는 정기적으로, 생성, 정의와 그 정의 View.OnClickListener를 사용하는 익명의 내부 클래스 기술을 사용합니다.

class MyActivity extends Activity { 

    public void myMethod() { 
     MyClickHandler handler = new MyClickHandler(); 
     Button[] buttons = getAllOneHundredButtonsAsArray(); 
     for (Button button : buttons) { 
      button.setOnClickListener(handler); 
     } 
    } 

    class MyClickHandler implements View.OnClickListener { 
     public void onClick(View v) { 
      showToast(((Button) v).getText()); 
     } 
    } 
} 
위의 코드에서
+1

덕분에 .. – KingKonApp

0

를 방문 당신은뿐만 아니라이 방법으로 작성할 수 있습니다 @lavekush의 아그라 왈 보르

public class MainActivity extends ActionBarActivity implements onClickListener{ 
    Button b,b1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     b = (Button)findViewById(R.id.btn); 
     b1 = (Button)findViewById(R.id.btn); 
     b.setOnClickListener(this); 
     b1.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View arg0) { 
     if(arg0.getId() == R.id.btn) 
     { 
      /*do some work on the button click*/ 
     } 
     else if(arg0.getId() == R.id.btn) 
     { 
      /*do some work on the button-1 click*/ 
     } 
    } 
}