첫번째 방법 :
<Button
android:id="@+id/button1"
android:text="Button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
findViewById(R.id.button1).setOnClickListener(btnClick1);
Button.OnClickListener btnClick1 = new Button.OnClickListener(){
public void onClick(View v){
Intent intent = new Intent(IntentTestActivity.this, TargetActivity.class);
startActivity(intent);
}
};
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
두번째 방법 :
<Button
android:text="Button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClickButton1"
/>
public void onClickButton1(View v){
Intent intent = new Intent(IntentTestActivity.this, TargetActivity.class);
startActivity(intent);
}
------------------------------------------------------------------------------------------------------------------------------------------------
둘다 버튼을 클릭시키는 소스인데,
이 두가지 소스간에 눈에 보이지않는, 숨어있는 차이가 있는건가요?
그리고 실무적으로는 어떤 방식이 더 많이 쓰이는지 궁금합니다.
넵 역시 위쪽 방법이 뭔가 동적으로 변경한다거나 할때 등등 여러모로 쓰임새가 다양할것 같네요.
저도 보통은 위 방법으로 쓰다가, 오늘 전에 사놓은 책을 잠깐 봤는데 아래 방법이 나와서요 ㅎㅎ
첫번째 것은 클릭 이벤트가 발생했을시 등록된 리스너의 onClick메소드가 호출되는 것으로 사용자가 오버라이드한 내용이 실행됩니다.
두번째 것은 xml상에 적어놓은 메소드의 이름으로 해당 메소드를 현재 엑티비티 클래스에서 찾아서 실행합니다. 반드시 View 를 인자로 받는 메소드여야만 할 것 입니다.
xml작업하는사람과 java쪽 작업하는사람이 이분화 되어있는경우 설계가 정말로 잘되어있어서
코딩하기전에 메소드명, 수행내용이 다 나와있다면
xml작업하는사람은 xml의 버튼에 미리 메소드를 적어놓을수 있겠지요.
java작업하는 사람은 해당 메소드를 만들어서 내부를 구현해놓으면 되겠구요.
짧은 소견이지만 국내에서는 저런식의 작업을 하는곳을 들어보진 못했습니다.
대체로 xml과 java 소스는 동일한 사람이 만들게되죠...
메소드명으로 메소드 찾아서 실행시키는 부분은 그냥 메소드 호출하는 것보다는 비용이 들어가지 않을까라는 생각이 듭니다만..
결론은 2가지 방법은 그냥 맘에 드는 방법으로 사용하면 됩니다.




개인적인 의견입니다만 첫번째를 저는 더 선호하게 되네요. 이벤트 관리가 좀더 보기 편할듯해서요. 어디까지나 개인적인 의견입니다.^^;