Hotline: 0919 365 363; Email: daotao@r2s.edu.vn

Xử lý sự kiện trong Android

Xử lý sự kiện trong Android

Kiến thức hữu ích

Xử lý sự kiện trong Android

Xử lý sự kiện trong Android là một thao tác quan trọng để giúp các developer tương tác được với người dùng. Và để tìm hiểu chi tiết về các sự kiện này cũng như cách xử lý đúng, mời bạn hãy theo dõi ngay bài viết của R2S dưới đây nhé!

Khái niệm xử lý sự kiện trong Android là gì?

xử lý sự kiện trong android
Xử lý sự kiện trong Android

Xử lý sự kiện trong Android là một cách hữu ích để thu thập dữ liệu về sự tương tác của người dùng với các thành phần trong ứng dụng, chẳng hạn như bấm vào một nút hay chạm vào màn hình cảm ứng. 

Bằng cách đăng ký sự kiện thông qua Event Listeners, chúng ta có thể nắm bắt những sự kiện trong chương trình của mình và xử lý chúng thông qua Event Handlers đăng ký tương ứng. Cụ thể như sau:

  • Event Listeners là một interface và được sử dụng để đăng ký sự kiện cho các thành phần trong UI. (Đăng ký sự kiện)
  • Event Handlers là phương thức xử lý khi phát sinh sự kiện. (Xử lý sự kiện)

Một số sự kiện thường gặp trong Android

Event HandlerEvent Listener Name
onClick()OnClickListener() Phương thức xử lý sự kiện khi người dùng hoặc click hoặc chạm (touche) hoặc focus trên bất kỳ widget nào như button, text, image vv. Chúng ta sử dụng OnClickListener() để đăng ký sự kiện và onClick() để xử lý sự kiện.
onLongClick()OnLongClickListener() Phương thức xử lý sự kiện khi người dùng click hoặc chạm (touche) hoặc focus vào một widget trong một khoảng thời gian dài. Chúng ta sử dụng OnLongClickListener() để đăng ký sự kiện và onLongClick() để xử lý sự kiện.
onFocusChange()OnFocusChangeListener() Sự kiện phát sinh khi widget mất focus. Chúng ta sử dụng OnFocusChangeListener() để đăng ký sự kiện và onFocusChange() để xử lý sự kiện.
onKey()OnFocusChangeListener() Sự kiện phát sinh khi người dùng focus trên widget và nhấn hoặc thả một phím trên thiết bị. Chúng ta sử dụng OnKeyListener() để đăng ký sự kiện và onKey() để xử lý sự kiện.
onTouch()OnTouchListener() Sự kiện phát sinh khi người dùng nhấn phím, nhả phím hoặc thực hiện bất kỳ cử chỉ chuyển động nào trên màn hình. Chúng ta sử dụng OnTouchListener() để đăng ký sự kiện và onTouch() để xử lý sự kiện.
onMenuItemClick()OnMenuItemClickListener()Sự kiện phát sinh khi người dùng chọn một mục trong menu. Chúng ta sử dụng OnMenuItemClickListener() để đăng ký sự kiện và onMenuItemClick() để xử lý sự kiện.
onCreateContextMenu()OnCreateContextMenuItemListener() Sự kiện phát sinh khi người dùng chọn một mục trong menu

Hướng dẫn các cách đăng ký sự kiện trong Android

Để đăng ký sự kiện trong Android, bạn có thể tham khảo một số bước thực hiện như sau:

Cách 1: Thực thi interface – Xử lý sự kiện trong Android tại Activity bằng lệnh sau

implements Event_Listener_Name

Sau đó, cài đặt các phương thức đã được định nghĩa trong interface đó. Ví dụ, đăng ký và xử lý sự kiện click cho nút Change. Khi người dùng click vào nút này, ứng dụng sẽ thay đổi text của TextView thành “Xin chào bạn!”. 

Cuối cùng, đây là giao diện ứng dụng khi chạy.

xử lý sự kiện trong android

Sau khi người dùng click vào nút Change

xử lý sự kiện trong android

Thiết kế giao diện ứng dụng

Thiết kế giao diện ứng dụng

Viết xử lý tại Activity

Cài đặt interface tên OnClickListener bằng cách thêm vào đoạn code

implements View.OnClickListener

Chúng ta sẽ nhận được thông báo lỗi từ NetBeans. Sau đó, để khắc phục, chúng ta sẽ bấm vào biểu tượng cái bóng đèn và chọn Implement methods. Tiếp theo, chúng ta sẽ chọn OK theo hình minh họa bên dưới.

Thiết kế giao diện ứng dụng
Thiết kế giao diện ứng dụng

NetBeans sẽ tự động phát sinh những phương thức đã được khai báo trong interface cho bạn biết.

Code hoàn chỉnh

Code hoàn chỉnh

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //Khai báo TextView
    TextView tvDemo;
    //Khai báo Button
    Button btnChange;

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

        //Tham chiếu TextView có id là tvDemo
        tvDemo = (TextView) findViewById(R.id.tvDemo);

        //Tham chiếu Button có id là button
        btnChange = (Button) findViewById(R.id.button);

        //Đăng ký sự kiện cho Button
        btnChange.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        //Nếu người dùng click vào Button Change
        if(v == btnChange) {
            tvDemo.setText("Xin chào bạn!");
        }
    }
}

Cách 2: Tạo lớp nội (inner class) xử lý sự kiện trong Android

Cú pháp:

widgetName.setEvent_Listener_Name(new View.Event_Listener_Name() {
    @Override
    public void Event_Handler(View v) {
        //Cài đặt xử lý sự kiện
    }
});

Một ví dụ về đăng ký và xử lý sự kiện click cho nút “Hello” là khi người dùng nhấn vào nút này, ứng dụng sẽ thay đổi nội dung của TextView thành “Hello World!”. 

Để thực hiện điều này, ta cần thiết kế giao diện ứng dụng bằng cách bổ sung thêm một nút và đặt id của nó là “btnHello”.

Tạo lớp nội (inner class)

Viết xử lý tại Activity

Bổ sung thêm các đoạn code sau

Button btnHello;
//Tham chiếu Button có id là btnHello
btnHello = (Button) findViewById(R.id.btnHello);

//Đăng ký và xử lý sự kiện cho button
btnHello.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
     tvDemo.setText("Hello World!");
   }
 });

Code hoàn chỉnh (Chú ý đoạn những chỗ in đậm là những đoạn code được bổ sung)
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //Khai báo TextView
    TextView tvDemo;
    //Khai báo Button
    Button btnChange;
    Button btnHello;

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

        //Tham chiếu TextView có id là tvDemo
        tvDemo = (TextView) findViewById(R.id.tvDemo);

        //Tham chiếu Button có id là button
        btnChange = (Button) findViewById(R.id.button);

        //Đăng ký sự kiện cho Button
        btnChange.setOnClickListener(this);

        //Tham chiếu Button có id là btnHello
        btnHello = (Button) findViewById(R.id.btnHello);

        //Đăng ký và xử lý sự kiện cho button
        btnHello.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tvDemo.setText("Hello World!");
            }
        });
    }

    @Override
    public void onClick(View v) {
        //Nếu người dùng click vào Button Change
        if(v == btnChange) {
            tvDemo.setText("Xin chào bạn!");
        }
    }
}

Ứng dụng khi chạy

Khi người dùng click vào Change

xử lý sự kiện trong android

Khi người dùng click vào Hello

Khi người dùng click vào Hello

Cách 3: Tạo phương thức và gọi phương thức tại thuộc tính onClick của widget khi xử lý sự kiện trong Android

Cú pháp khai báo phương thức như sau:

public void methodName(View v) {   
//Viết xử lý sự kiện

}

  

Một ví dụ về cách đăng ký và xử lý sự kiện click cho nút “Exit”. Khi người dùng nhấn vào nút này, ứng dụng sẽ bị đóng lại. 

Đây là thiết kế giao diện.

Tạo phương thức và gọi phương thức tại thuộc tính onClick của widget

Viết xử lý

Tạo phương thức tên exitAction và viết xử lý

Code hoàn chỉnh

import android.app.Application;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //Khai báo TextView
    TextView tvDemo;
    //Khai báo Button
    Button btnChange;
    Button btnHello;

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

        //Tham chiếu TextView có id là tvDemo
        tvDemo = (TextView) findViewById(R.id.tvDemo);

        //Tham chiếu Button có id là button
        btnChange = (Button) findViewById(R.id.button);

        //Đăng ký sự kiện cho Button
        btnChange.setOnClickListener(this);

        //Tham chiếu Button có id là btnHello
        btnHello = (Button) findViewById(R.id.btnHello);

        //Đăng ký và xử lý sự kiện cho button
        btnHello.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tvDemo.setText("Hello World!");
            }
        });
    }

    @Override
    public void onClick(View v) {
        //Nếu người dùng click vào Button Change
        if(v == btnChange) {
            tvDemo.setText("Xin chào bạn!");
        }
    }

    public void exitAction(View v) {
        finish();
    }
}

Gọi phương thức exitAction sử dụng thuộc tính onClick tại layout

Gọi phương thức exitAction sử dụng thuộc tính onClick tại layout

Giao diện ứng dụng khi chạy

Giao diện ứng dụng khi chạy

Khi người dùng click vào nút Exit, ứng dụng sẽ bị đóng.

Khi người dùng click vào nút Exit, ứng dụng sẽ bị đóng.

Xử lý sự kiện trong android – Bài tập thực hành

Bài thực hành số 1: Xây dựng một ứng dụng tìm số nhỏ nhất trong 2 số.

Xử lý sự kiện trong android

Bài thực hành số 2: Xây dựng mộ chương trình ứng dụng nhập vào một năm dương lịch và thực hiện chuyển sang năm âm lịch tương ứng.

Xử lý sự kiện trong android

Hướng dẫn thực hiện chuyển năm dương lịch sang năm âm lịch

Xử lý sự kiện trong android

Kết luận

Trên đây là bài giới thiệu về xử lý sự kiện trong android mà bạn nên biết. Với 3 cách đăng ký trên, nhất định bạn sẽ tạo thành công một chương trình theo ý muốn.

Bài viết gốc được đăng tại: giasutinhoc.vn

Alert: You are not allowed to copy content or view source !!