태그

페이지

2018년 5월 13일 일요일

어플 개발 - 버튼 이벤트 (button event) 만들기

 이제까지 보여주는 화면(출력하는 화면)을 만들었다면 지금 부터는 사용자의 입력에 반응하는 기능, 즉, 이벤트를 체크하고 처리하는 기능에 대해서 알아보고자 합니다.

 이번에는 기존에 사용해왔던 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 안의 텍스트가 출력되는 것을 확인할 수 있습니다.

댓글 없음:

댓글 쓰기