본문 바로가기
Android

이벤트 리스너 및 콜백을 사용한 사용자 입력 처리

by 아도리 2023. 2. 26.

이벤트 리스너(event listener)와 콜백(callback)으로 사용자 입력을 처리하는 것은 대화형 안드로이드 애플리케이션(interativa android appliaction)을 제작할 때 중요한 부분입니다. 안드로이드에서는 이벤트 리스너를 사용하여 특정 이벤트를 수신한 다음 이벤트가 발생하면 콜백 함수를 실행할 수 있습니다.

다음은 안드로이드 애플리케이션에서 이벤트 리스너와 콜백을 사용하여 사용자 입력을 처리하는 방법에 대한 예시입니다.

public class MainActivity extends AppCompatActivity {
    private Button myButton;
    private EditText myEditText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Get references to the button and edit text views
        myButton = findViewById(R.id.myButton);
        myEditText = findViewById(R.id.myEditText);

        // Attach an event listener to the button
        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Define a callback function to handle the click event
                handleButtonClick();
            }
        });

        // Attach an event listener to the edit text field
        myEditText.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // Define a callback function to handle key events
                if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                        (keyCode == KeyEvent.KEYCODE_ENTER)) {
                    handleEnterKey();
                    return true;
                }
                return false;
            }
        });
    }

    private void handleButtonClick() {
        // Perform some action when the button is clicked
        Toast.makeText(this, "Button clicked!", Toast.LENGTH_SHORT).show();
    }

    private void handleEnterKey() {
        // Perform some action when the enter key is pressed
        String input = myEditText.getText().toString();
        Toast.makeText(this, "You entered: " + input, Toast.LENGTH_SHORT).show();
        myEditText.getText().clear();
    }
}

이 예시에서는 버튼과 편집 텍스트 필드가 있는 안드로이드 액티비티가 있습니다. 레이아웃 XML 파일에서 이러한 보기에 대한 참조를 가져오기 위해 findViewById()를 사용합니다.

다음으로, setOnClickListener()를 사용하여 이벤트 리스너를 버튼에 연결합니다. 리스너는 onClick() 메서드를 재정의하는 익명의 내부 클래스입니다. onClick() 메서드 내부에서는 버튼이 클릭될 때 몇 가지 작업을 수행하기 위해 별도의 handleButtonClick() 메서드를 호출합니다.

또한 setOnKeyListener()를 사용하여 편집 텍스트 필드에 이벤트 리스너를 첨부합니다. 리스너는 onKey() 메서드를 재정의하는 또 다른 익명의 내부 클래스입니다. onKey() 메서드 내부에서는 엔터키를 확인하고 엔터키가 눌렸을 때 별도의 메서드 handleEnterKey()를 호출하여 일부 작업을 수행합니다.

handleButtonClick()과 handleEnterKey()에서 모두 사용자 입력에 따라 몇 가지 작업을 수행합니다. 이 예시에서는 단순히 사용자에게 토스트 메시지를 표시합니다.

예제 코드는 아래 링크에 올려두었습니다.

https://github.com/Sungdong9Kim/eventlistenerexample

읽어주셔서 감사합니다!

댓글