2011-02-10 7 views
2

저는 C 계열의 배경을 가진 새로운 Java입니다. 이 코드는 해독 할 수 없습니다.OnClickListener()에 전달되는 매개 변수는 무엇입니까?

startButton.setOnClickListener(new View.OnClickListener(){ 
        public void onClick(View view) 
        {         
                              
        usrnameobj = (EditText)findViewById(R.id.et_usename); 
           usrpassobj = (EditText)findViewById(R.id.et_password); 
        String username = usrnameobj.getText().toString(); 
        String password = usrpassobj.getText().toString(); 
        
        Intent i=new Intent(getApplicationContext(),AndroidXmlResource.class); 
        i.putExtra("entry",username.toString() + password.toString()); 
        startActivityForResult(i,REQ_CODE); 
      
        }   
       }); 

난 단지까지 상상할 수 :이 블록의 내부 클래스와 인터페이스 무엇을 식별하여 나를 도울 수있는 경우에만

startButton.setOnClickListener(new View.OnClickListener());

을 아무것도하지만 사이는 {}

+0

나는 그것이 좋은 질문입니다 말할 것이지만, 그것이 귀여운 질문 .... –

+0

인자를 인수로 전달하기 전에 객체를 만드는 습관적 인 사람에게는 귀여운 것이 아닙니다. ( – chunkyguy

답변

2

OnClickListener는 클래스으로 정의 된 인터페이스입니다. 이런 식으로 상상 :

class View 
{ 
    static interface OnClickListener 
    { 
     public void onClick(View v); 
    } 
} 

{사이의 것은 것은}는 OnClickListener 인터페이스의 방법 onClick(View)의 구현입니다. new...으로 시작하는() 사이의 것은 익명 내부 클래스입니다. 자세한 설명은 here을 참조하십시오.

건배!

0

언급 된 샘플 코드는 익명의 내부 클래스를 포함합니다.

여기서 사용자 이름 & 암호 데이터를 가져 오는 중 & 사용자가 시작 버튼을 클릭 할 때 다음 활동이 호출 중입니다.

http://www.remwebdevelopment.com/dev/a69/Different-Ways-To-Handle-Clicks.html

이 친절하게 어떤 해명 복귀 :

친절하게 다음과 같은 URL을 확인

2

View.OnClickListener 인터페이스를 구현하는 익명의 클래스를 만듭니다. View에 대한 클릭을 받고 처리해야하지만이 간단한 프로세스에 대한 공식 클래스를 만들지 않으려는 경우 (많은 경우 끝낼 것입니다) 이렇게하면됩니다.

익명 클래스에 대한 설명은 this입니다.

+0

감사합니다! 나는 이것에 관해 많은 것을 읽을 필요가있다라고 생각한다 :) – chunkyguy

2

익명 클래스가 있습니다. OnClickListener를 구현하는 별도의 클래스를 만들고 해당 클래스의 인스턴스를 만들어 setOnClickListener의 인수로 보내면됩니다.

"public void onClick (View view)"는 재정의해야하는 함수이며 setOnClickListener 클래스를 클릭하면 호출됩니다. 따라서이 경우에는 양식에서 암호와 사용자 이름을 가져오고 의도 세트에 대한 활동을 시작합니다.

1

setOnClickListener 메서드는 새로운 View.OnClickListener() 인스턴스를 매개 변수로 사용하며 중괄호 안에있는 내용은 해당 클래스의 onClick() 메서드를 재정의합니다. 나는 당신이 onClick() 방법을 쉽게 해부 할 수 있다고 생각한다.

0

당신은 할 수 중 다음에서 onCreate() 중

btn.setOnClickListener(this); 

public void onClick(View v) { 
    switch(v.getId()) { 

    case R.id.Button: 
     //do what you like to do 
     break; 
    } 
} 

또는

btn.setOnClickListener(new OnClickListener() { 

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


          // do what you like to do 
     } 

}); 
관련 문제