Xử lý sự kiện trong android (Bài 3)

Xử lý sự kiện trong android (Bài 3)

xu-ly-su-kien-trong-android-7
Lập trình Android cơ bản

Xử lý sự kiện trong android (Bài 3)

Xử lý sự kiện trong android sẽ giúp các bạn biết sự kiện 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 tương tác của ứng dụng.

Giống như bấm vào một nút hoặc chạm vào màn hình cảm ứng, vv. Bạn có thể nắm bắt những sự kiện trong chương trình của bạn và có những xử lý thích hợp theo yêu cầu.

Xử lý sự kiện trong android – Có hai khái niệm

Event Listeners là một interface. Event Listeners đượ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() Đăng ký sự kiện khi người dùng hoặc click hoặc chạm (touche) hoặc focuse trên bất ký widget như button, text, image vv. Chúng ta sẽ sử dụng phương onClick() để xử lý sự kiện.
onLongClick()OnLongClickListener() Đăng ký 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 như button, text, image vv. trong một hoặc nhiều giây. Chúng ta sẽ sử dụng phương onLongClick() để xử lý sự kiện.
onFocusChange()OnFocusChangeListener() Sự kiện phát sinh khi widget mất focus.
onKey()OnFocusChangeListener() Sự kiện phát sinh khi người dùng focus trên widget và nhấn (presse) hoặc thả (release) một phím trên thiết bị.
onTouch()OnTouchListener() Sự kiện phát sinh khi người dùng nhấn phím, nhả phím, hoặc bất kỳ cử chỉ chuyển động trên màn hình.
onMenuItemClick()OnMenuItemClickListener()Sự kiện phát sinh khi người dùng chọn một mục trong menu.
onCreateContextMenu()OnCreateContextMenuItemListener() Sự kiện phát sinh khi người dùng chọn một mục trong menu ngữ cảnh (Context Menu)

Xử lý sự kiện trong android – Các cách đăng ký sự kiện

Cách 1: Thực thi interface tại Activity bằng lệnh sạu

implements Event_Listener_Name

Sau đó cài đặt tất cả các phương thức trong interface này.

Ví dụ đăng ký và xử lý sự kiện click cho nút Change. Khi người dùng click vào button này, ứng dụng sẽ thay đổi text của TextView thành “Xin chào bạn!”.

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

xu ly su kien trong android 5

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

xu ly su kien trong android 6

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

xu ly su kien trong android 3

Viết xử lý tại Activity

Cài đặt interface tên OnClickListener bằng cách bổ sung đoạn code

implements View.OnClickListener

NetBeans sẽ thông báo lỗi. Chúng ta sẽ click vào biểu tượng cái bóng đèn -> chọn Implement methods -> chọn OK như hình bên dưới.

xu ly su kien trong android 1
xu ly su kien trong android 2

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

xu ly su kien trong android 4

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)

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
    }
});

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

Thiết kế giao diện ứng dụng (Bổ sung thêm một button và đặt id là btnHello)

xu ly su kien trong android 7

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

xu ly su kien trong android 8

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

xu ly su kien trong android 9

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

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

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

Ví dụ đăng ký và xử lý sự kiện click cho nút Exit. Khi người dùng click vào button này, ứng dụng sẽ bị đóng.

Thiết kế giao diện

xu ly su kien trong android 11

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

xu ly su kien trong android 10

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

xu ly su kien trong android 12

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

xu ly su kien trong android 13

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 ứ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 ứ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

xu ly su kien trong android 15

Bài thực hành số 3: Xây dựng ứng dụng giải phương trình bậc nhất ax + b = 0

xu ly su kien trong android 14
Alert: You are not allowed to copy content or view source !!