이번에는 기존에 사용해왔던 res>>layout>>activity_main.xml 이 아닌 java 경로 밑에 있는 MainActivity에서 소스를 수정해 주어야 합니다.
우선 layout에서 만들었던 버튼(button)에 다음과 같이 id를 부여해 줍니다. 저는 button1 이라는 id를 사용하였고, 이 id는 쓰기 원하는 아무 id를 넣어주면 됩니다.
android:id="@+id/button1"
그리고 다음과 같은 소스를 MainActivity 에서 작성해 주었습니다.
public class MainActivity extends AppCompatActivity {
Button button_t1; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Button_act b1 = new Button_act();
button_t1 = (Button) findViewById(R.id.button1) ;
button_t1.setOnClickListener(b1);
} class Button_act implements View.OnClickListener{
public void onClick(View v){
Toast.makeText(MainActivity.this, "Button1 Click!"
, Toast.LENGTH_SHORT).show();
}
}
}
간단한 설명을 하자면 우선 MainActivity 내에 Button 에 해당하는 임의의 변수 button_t1을 만들어 줍니다.
이후, 인터페이스(Interface)를 구현한 클래스(class)를 만들어야 합니다.
일단 미리 만들어 놓은 button1 이 눌러젔을 때 Button1이 클릭 되었음을 알릴 수 있음을 확인하기 위해 Toast class 를 사용하였습니다. 이 Toast class는 화면에 잠시 동안 메시지를 띄울 수 있습니다.
그래서 다시 구문을 보면 View class 안에 구문들 중에 OnClickListener 를 통해서 onClick 콜백 메소드를 돌리게끔 해놓고 그 안에 Toast 기능을 사용하게끔 해놓았습니다.
Toast는 makeText 메소드를 구현되는데 이 makeText 안에 화면에 나타내고자 하는 문자열과 해당 문자열을 얼마나 긴 시간 동안 표시할 지 등을 나타낼 수 있습니다.
또한 마지막에 show() 메소드를 통해 화면에 출력을 결정합니다.
이렇게 인터페이스를 구현한 클래스를 만들고 나면 다시 onCreate 내에서 new 연산자를 이용하여 미리 만들어둔 Button_act class를 b1에 리스너 객체로 등록합니다.
그리고 나서 이전에 button1 에 해당하는 버튼에만 이 기능을 부여하기 위해 findViewId 를 통해 button1에 해당하는 버튼을 button_t1이라고 설정해 줍니다.
이제 마지막으로 이 버튼과 버튼이 눌러졌을 때의 행동을 setOnClickListner를 통하여 연결해 주면 button1 이 눌러질 때마다 Toast 안의 텍스트가 출력되는 것을 확인할 수 있습니다.
댓글 없음:
댓글 쓰기