6 cách xử lý sự kiện trong lập trình Android

Đây kiến thức nâng cao nhằm bổ trợ cho bài viết xử lí sự kiện trong series hướng dẫn lập trình android cơ bản tại Blog mình, cũng như giới thiệu cho các bạn biết các kiểu lập trình sự kiện trong android để sau này đi phỏng vấn xin việc biết đâu người ta hỏi đó.

Mọi người ai bắt đầu học android chắc nghe đến xử lý kiện kiện chắc nghĩ ngay đến hàm setOnClickListener đúng không nào? Đúng thế, mình xưa học cũng toàn dùng nó không à, và bây giờ cũng vậy.Tuy nhiên để xử lí sự kiện cho một View nào đó trong android có rất nhiều cách, và dưới đây là 6 cách bạn phải đọc qua để nắm nhé.

6 cách lập trình sự kiện Android

1. Xử lý sự kiện trong Layout (Handle event in Layout)

Khi bạn tạo một View trong layout, bất kỳ layout nào cũng sẽ có thuộc tính như sau: android:onClick=”EventName ,  EventName ở đây chính là tên sự kiện, khi người dùng tương tác với view và nó sẽ bắt sự kiện tương ứng với view đó dựa vào ID.

Đây là một view định nghĩa trong layout:


Sau đó ở MainActivity sẽ bắt sự kiện như sau:


Ở file layout mình đã khai báo một sự kiện onClick có tên là “onClick luôn, và trong class MainActivity mình khai báo một phương thức có tên public void onClick(View view), ở đây các bạn muốn nó bắt sự kiện cho nút button thì bắt buộc phương thức khai báo phải trùng tên với tên onClick trong file layout.

Ở đây mình đã khi báo giống nhau rồi nhé, nhớ tham số truyển vào phương thức là View nhé chứ không có là lỗi ngay.Ngoài ra trong trường hợp có nhiều nút View gán cùng tên sự kiện thì bạn sẽ bắt theo ID như sau:


Và đây là các bắt sự kiện cho 2 nút button có chung tên sự kiện onClick:


Rất dễ đúng không nào, mình không giải thích gì thêm cái này các bạn đọc hiểu nhé.

2. Xử lí sự kiện bằng lớp nặc danh (Inline anonymous listener)

Đây là một cách bắt sự kiện gọi là kinh điển của những người lập trình viên Android vì nó được sử dụng rất là nhiều do đơn giản và tiện dụng.Đây là cách bắt sự kiện dựa vào ID của view.


Và đây là cách bắt sự kiện trong MainAcitivty:


Với kiểu xử lý sự kiện này thì bạn sẽ thấy thông qua id của view đúng không nào?Sau khi khởi tạo xong Button thì bạn gọi phương thức setOnClickListener và truyền vào param là Inner Anonymous (lớp nặc danh), lớp này có công dụng bắt sự kiện cho view gọi nó.

3. Kế thừa Interface OnClickListener (Implements OnClickListener Interface)

Ở đây thì Activity sẽ kế thừa interface OnClickListener, interface này phương thức onClick sẽ có nhiệm vụ là lắng nghe các sự kiện click vào View, nếu có phương thức này sẽ được gọi đến.

Đinh nghĩa nút Button ở xml như sau:


Sau đó ở MainActivity bạn sẽ implement interface OnClickListener và override lại phương thức onClick của interface này.Ở đây nếu bạn không hiểu về interface hay override bắt buộc bạn phải quay lại xem loạt series hướng dẫn java căn bản mà mình đã nói ở bài viết giới thiệu về series lập trình android này.


Cách này cũng tương tự như cách 2 thay vì tạo một Anonymous class thì ở đây sẽ implement luôn, và nếu như có nhiều view trong layout thì bạn sẽ xử lý nó dựa theo id như sau:

4. Sử dụng biến (Event Listener using Variable)

Cách này là một kiểu khác của cách 3 thôi chứ không có gì đặc biệt thay vì bạn implement interface thì ở đây bạn sẽ tạo thẳng một biến thuộc interface đó rồi set sự kiện cho biến đó lắng nghe các event từ View.

Mình dùng lại file layout ở ví dụ 3 nhé, mình show file ở MainActivity thôi:


Bạn thấy không nó tương tự như cách 3 thôi chỉ khác cách vận dụng như thế nào thôi.

5. Bắt sự kiện thông qua lớp lắng nghe (Listener Class)

Cách này cũng lại y chang cách 3 và 4 luôn, thay vì ở cách 3 bạn implement trực tiếp cho class MainActivity thì ở đây bạn tạo một class inner bên trong MainActivity và implement interface OnClickListener là xong, giao diện mình sử dụng lại ở ví dụ 3 nhé.

Code ở MainActivity như sau:


ở ví dụ 3 bạn set btnLogin.setOnClickListener(this), this ở đây nó tự hiểu là interface OnClickListener mà MainActivity đã kế thừa còn bây giờ bạn set là btnLogin.setOnClickListener(new SuKienClass()), thì nó tự hiểu là Interface hiện tại đang ở class SuKienClass, và nó sẽ gọi tương ứng phương thức onClick().

6. PerformClick method

Ở đây bạn sẽ không bắt sự kiện dựa vào id nữa bởi vì đây là kiểu xử lý sự kiện cho các view động, có nghĩa là các view được tạo ra trong quá trình Runtime chứ không phải định nghĩa sẵn trong file layout xml.

Mà nếu bạn chưa hiểu về cách tạo giao diện bằng java code khi runtime thì xem lại bài viết tại blog mình nhé, mình viết cũng khá kĩ rồi chắc các bạn sẽ hiểu.

Bây giờ file layout mình không định nghĩa một nút Button nào cả:


MainActivity:


Minh tạo mới một Button và add nó vào LinearLayout, sau đó cho button override phương thức performClick() và trong đây bạn sẽ xử lý sự kiện cho nút button đó.Cách này chắc biết cho vui chứ mấy ai sử dụng lắm đâu bạn có thể không quan tâm cũng được.

OK…Vậy là xong 6 cách xử lý sự kiện trong Android, mọi ý kiến thắc mắc gì xin các bạn cứ comment bên dưới Blog nhé…

6 cách xử lý sự kiện trong lập trình Android
5 (100%) 1 vote

Add Comment

*