안 드 로 이 드 학습 컨트롤 의 이벤트 감청 네 가지 쓰기

안 드 로 이 드 의 많은 컨트롤 의 이벤트 감청 은 하나의 쓰기 만 있 는 것 이 아 닙 니 다. 여기 서 저 는 Button 을 예 로 들 어 이 컨트롤 의 네 가지 쓰기 방법 을 보 여 드 리 겠 습 니 다!!감청 사건 을 써 야 할 때 좀 더 명확 한 선택 을 하 는 데 도움 이 되 었 으 면 좋 겠 습 니 다.
우선 이번 xml 코드 를 드 립 니 다:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:gravity="center">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

1) 익명 클래스 를 통한 사건 감청
public class MainActivity extends Activity {

	//  button
	Button btn1 = (Button)findViewById(R.id.button1);
	Button btn2 = (Button)findViewById(R.id.button2);
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //         button     
        btn1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "This is Button 111", Toast.LENGTH_SHORT).show();
				
			}
		});
        btn2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "This is Button 222", Toast.LENGTH_SHORT).show();
			}
		});
    }
}

2) 사용자 정의 이벤트 감청 클래스
public class MainActivity extends Activity {
	 
	  Button btn1, btn2;
	 
	  class MyClickListener implements OnClickListener {
	 
	    @Override
	    public void onClick(View v) {
	      // TODO Auto-generated method stub
	      switch (v.getId()) {
	      case R.id.button1:
	        Toast.makeText(MainActivity.this, "This is Button 111", Toast.LENGTH_SHORT).show();
	        break;
	      case R.id.button2:
	        Toast.makeText(MainActivity.this, "This is Button 222", Toast.LENGTH_SHORT).show();
	        break;
	      default:
	        break;
	      }
	    }
	  }
	 
	  @Override
	  protected void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.activity_main);
	 
	    btn1 = (Button) findViewById(R.id.button1);
	    btn2 = (Button) findViewById(R.id.button2);
	 
	    btn1.setOnClickListener(new MyClickListener());
	    btn2.setOnClickListener(new MyClickListener());
	  }
}

3) MainActivity 클래스 를 통 해 OnClickListener 인 터 페 이 스 를 실현 하여 컨트롤 에 대한 이벤트 감청 을 완성 합 니 다.
public class MainActivity extends Activity implements OnClickListener {
	Button btn1 = null;
	Button btn2 = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn1 = (Button)findViewById(R.id.button1);
		btn2 = (Button)findViewById(R.id.button2);
		//Onclick                     
		btn1.setOnClickListener(this);
		btn2.setOnClickListener(this);
	}

	//	btn1.setOnClickListener(l);
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
	      switch (v.getId()) {
	      case R.id.button1:
	        Toast.makeText(MainActivity.this, "This is Button 111", Toast.LENGTH_SHORT).show();
	        break;
	      case R.id.button2:
	        Toast.makeText(MainActivity.this, "This is Button 222", Toast.LENGTH_SHORT).show();
	        break;
	      default:
	        break;
	      }
	}
}

4) XML 파일 에서 "지정 한 단추 의 onClick 속성 을 표시 합 니 다. 이렇게 단 추 를 누 르 면 Activity 의 click () 방법 을 반사 적 으로 호출 합 니 다"
public class zhulei extends Activity implements OnClickListener {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	//   @Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
	      switch (v.getId()) {
	      case R.id.button1:
	        Toast.makeText(MainActivity.this, "This is Button 111", Toast.LENGTH_SHORT).show();
	        break;
	      case R.id.button2:
	        Toast.makeText(MainActivity.this, "This is Button 222", Toast.LENGTH_SHORT).show();
	        break;
	      default:
	        break;
	      }
	}
}

이 네 가지 방법 으로 볼 때 소량의 컨트롤 은 익명 류 를 사용 하 는 것 이 편리 하 다. 비교적 많은 컨트롤 을 사용 할 때 MainActivity 류 를 사용 하여 OnClickListener 인 터 페 이 스 를 실현 하 는 방식 이 더욱 좋 고 통일 되 어 보인다. 또한 네 번 째 쓰기 방법 은 활동 중의 코드 량 을 줄 일 수 있 으 나 모든 컨트롤 에 속성 을 추가 해 야 하기 때문에 선택 할 때 정 에 따라 정할 수 있다.

좋은 웹페이지 즐겨찾기