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 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 Handler | Event 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.
Sau khi người dùng click vào nút Change
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.
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
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”.
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
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.
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
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.
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ố.
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.
Hướng dẫn thực hiện chuyển năm dương lịch sang năm âm lịch
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