Xử Lý Sự Kiện Trong Android - NTCDE.COM
Có thể bạn quan tâm
Sự kiện trong android là một cá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 của ứng dụng. Giống như nút bấm hoặc các thao tác cảm ứng trên màn hình ,.. vv. Trong ứng dụng Android duy trì một tá các thao tác sự kiện, đặc biệt là Button dùng để tạo sự kiện. Bạn có thể nắm bắt những sự kiện trong app của bạn và có hành động thích hợp theo yêu cầu.
Ba khái niệm liên quan đến quản lý sự kiện Android :
- Event Listeners : Event Listeners là một giao diện trong lớp View có chứa một phương thức đơn gọi lại duy nhất. Những phương thức này sẽ được gọi bởi các framework Android khi View đã được đăng ký được kích hoạt bởi người dùng tương tác với các mục trong giao diện người dùng.
- Event Listeners Registration : Event Registration là quá trình mà theo đó một Event Handlers được đăng ký với Event Listener để xử lý được gọi khi Event Listener kích hoạt.
- Event Handlers : Khi một sự kiện xảy ra và chúng đã đăng ký một Event Listeners cho sự kiện này, Event Listeners bắt đầu gọi Event Handlers, đó là phương thức chính để xử lý sự kiện.
Event Listeners & Event Handlers
| Xử lý sự kiện | Event Listener & Chú thích |
|---|---|
| onClick() | OnClickListener () Hàm này được gọi khi người dùng chạm vào bất kỳ widget button, văn bản, hình ảnh ,… Bạn sẽ sử dụng onClick () event handler để xử lý các sự kiện như vậy. |
| onLongClick () | OnLongClickListener () Hàm này được gọi khi người dùng nhấn vào bất kỳ widget button, văn bản, hình ảnh, vv trong khoảng 2s trở lên. Bạn sẽ sử dụng onLongClick () event handler để xử lý các sự kiện như vậy. |
| onFocusChange () | OnFocusChangeListener () Hàm này được gọi khi người dùng thay đổi hay rời khỏi đối tượng đang lựa chọn, bạn sẽ sử dụng onFocusChange() event handler để xử lý sự kiện này. |
| onkey () | OnFocusChangeListener () Hàm này được gọi khi người sử dụng nhấn giữ một phím cứng nào đó trên thiết bị. Bạn sẽ sử dụng onKey () event handler để xử lý các sự kiện như vậy. |
| onTouch () | OnTouchListener () Hàm này được gọi 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. Bạn sẽ sử dụng onTouch () event handler để xử lý các sự kiện như vậy. |
| onMenuItemClick () | OnMenuItemClickListener () Hàm này được gọi khi người dùng chọn một mục trình đơn (menu item). Bạn sẽ sử dụng onMenuItemClick () event handler để xử lý các sự kiện như vậy. |
| onCreateContextMenu () | onCreateContextMenuItemListener () Hàm này được gọi khi các menu ngữ cảnh đang được xây dựng. |
Event Listeners Registration
Event Registration là quá trình mà theo đó một Event Handler được đăng ký với Event Listener để xử lý được gọi khi Event Listener bắt đầu các sự kiện. Mình sẽ liệt kê 3 cách được sử dụng nhiều nhất, trong đó bạn có thể sử dụng bất kỳ của 1 trong 3 cách này .
- Sử dụng một Anonymous Inner Class.
- Sử dụng lớp Hoạt động thực hiện giao diện Listener.
- Sử dụng Layout file activity_main.xml chỉ định xử lý sự kiện trực tiếp.
Demo xử lý sự kiện trong Android
Trong ví dụ dưới đây mình xin làm bài demo về các phép toán công trừ nhân chia được nhập vào từ bàn phím và hiện ra kết quả khi click vào button tương ứng:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="dev4u.com.demoeventhandling.MainActivity"> <EditText android:id="@+id/edSoA" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Nhập số A" android:inputType="number" /> <EditText android:id="@+id/edSoB" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Nhập số B" android:inputType="number" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="4"> <Button android:id="@+id/btnCong" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Cộng" /> <Button android:id="@+id/btnTru" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text=" Trừ" /> <Button android:id="@+id/btnNhan" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Nhân" /> <Button android:id="@+id/btnChia" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Chia" /> </LinearLayout> <TextView android:id="@+id/tvKetQua" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Kết Quả : " android:textSize="20dp" android:textStyle="bold" /> </LinearLayout>MainActivity
package dev4u.com.demoeventhandling; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { //Khai báo các đối tượng View có trong file activity_main.xml EditText edSoA, edSoB; Button btnCong, btnTru, btnNhan, btnChia; TextView tvKetQua; int soA; int soB; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Định nghĩa các đối tượng View tương ứng với các ID có trong file xml edSoA = (EditText) findViewById(R.id.edSoA); /* Bạn cũng có thể khai báo trực tiếp ở đây bằng cú pháp sau nhưng không nên vì sẽ khó quản lý code của bạnysvaf trông thiếu chuyên nghiệp EditText edSoA=(EditText) findViewById(R.id.edSoA); */ edSoB = (EditText) findViewById(R.id.edSoB); btnCong = (Button) findViewById(R.id.btnCong); btnTru = (Button) findViewById(R.id.btnTru); btnNhan = (Button) findViewById(R.id.btnNhan); btnChia = (Button) findViewById(R.id.btnChia); tvKetQua = (TextView) findViewById(R.id.tvKetQua); //Xử lý sự kiện cho các button Cộng Trừ Nhân Chia //Đây là cách xử lý sự kiện cho các button được sử dụng phổ biến nhất btnCong.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { epKieu(); //Gán kết quả cho TextView KetQua tvKetQua.setText("Kết Quả: " + Cong(soA, soB)); } }); btnTru.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { epKieu(); //Gán kết quả cho TextView KetQua tvKetQua.setText("Kết Quả: " + Tru(soA, soB)); } }); btnNhan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { epKieu(); //Gán kết quả cho TextView KetQua tvKetQua.setText("Kết Quả: " + Nhan(soA, soB)); } }); btnChia.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { epKieu(); //Gán kết quả cho TextView KetQua tvKetQua.setText("Kết Quả: " + Chia(soA, soB)); } }); } //Ép kiểu cho số A và số B, vì mặc định tham sô truyền vào là kiểu ký tự private void epKieu() { soA = Integer.parseInt(edSoA.getText().toString()); soB = Integer.parseInt(edSoB.getText().toString()); } // Hàm cộng 2 số a và b private int Cong(int a, int b) { return (a + b); } // Hàm trừ 2 số a và b private int Tru(int a, int b) { return (a - b); } // Hàm nhân 2 số a và b private int Nhan(int a, int b) { return (a * b); } // Hàm chia 2 số a và b private double Chia(double a, double b) { return (a / b); } }AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="dev4u.com.demoeventhandling"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>Lời kết
Mặc dù là hơi loằng ngoằng dài dòng và khó hiểu 1 chút nhưng mong là qua bài viết này bạn có thể hiểu rõ hơn một chút về xử lý sự kiện trong ứng dụng android – Event handling in Android. Trong quá trình tìm hiểu nếu bạn gặp bất kỳ lỗi nào hay có bất kỳ góp ý hay chia sẻ gì, mong bạn có thể để lại comment bên dưới hoặc gửi mail về [email protected]. Xin cảm ơn!!
Button click event handling in android, Button event handler in android, Create event handler in android, Event handler in android, Sự kiện trong android, Xử lý sự kiện trong android Previous PostCác thành phần tương tác trong giao diện của ứng dụng – UI Controls Next PostToast và Alert Dialog trong ứng dụng AndroidRelated Post
Gom Marker trong Android với Google Maps Android API – Google Maps Android Marker Clustering Utility Sử dụng SwipeRefreshLayout trong ứng dụng Android Hướng dẫn tạo Material Dialog Bottom Sheet Android Tạo context menu trong Android – ActionBar ActionMode.CallBack Example Retrofit và Volley thư viện nào tốt hơn Hướng dẫn sử dụng thư viện Volley trong Android Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 2 Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 1 Hàm chuyển đổi Timestamp thành Datetime trong Android và JavaScript Design Patterns là gì? Tạo Project Android theo mẫu Design Patterns(Part 2)Leave a Reply Cancel reply
Your email address will not be published. Required fields are marked *
Comment *
Name *
Email *
Website
Save my name, email, and website in this browser for the next time I comment.
Don't subscribe All new comments Replies to my comments
This site uses Akismet to reduce spam. Learn how your comment data is processed.
Search
SearchKhuyên dùng
Nhận 100$ miễn phí với Vultr
Shortener Link Fast & Easy
Recent Comments
- NTC on Hướng dẫn reset thời gian dùng thử JetBrains IDEs
- nekopoi on Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 1
- Nguyễn Huy Hoàng on Hướng dẫn reset thời gian dùng thử JetBrains IDEs
- Tâm Duy on Tạo Blog đơn giản với Nuxt JS và WordPress API
- Đức Mạnh on Thêm Form tuỳ chỉnh tính giá sản phẩm trong Woocommerce WordPress
- NTC on Hướng dẫn reset thời gian dùng thử JetBrains IDEs
Recent Posts
- Oh My Zsh: Nâng cao trải nghiệm terminal với giao diện đẹp và các plugin tăng hiệu suất! 01/01/2024
- Git cherry-pick là gì? Cách sử dụng và ví dụ 04/07/2023
- Git Rebase: Gộp nhiều commit thành một để tối ưu hóa lịch sử commit 29/05/2023
- 11 tính năng JavaScript mới tuyệt vời trong ES13 (ES2022) 26/03/2023
- CSS diệu kỳ: Các thuộc tính CSS mà bạn có thể chưa biết 07/03/2022
Advertisement
SearchTừ khóa » Các Kiểu Lập Trình Sự Kiện Trong Android
-
Bài 4: Các Kiểu Lập Trình Sự Kiện Trong Android
-
Bài Tập 8: Các Kiểu Lập Trình Sự Kiện Trong Android
-
6 Cách Xử Lý Sự Kiện Trong Lập Trình Android - Diên Lợi
-
Xử Lý Sự Kiện (Event Handling) Trong Android
-
Sự Kiện Và Xử Lý Sự Kiện Trong Android - Trần Ngọc Minh Notes
-
Xử Lý Sự Kiện Trong Android (Event Handling) - VNTALKING
-
Lập Trình Android C7 Các Kiểu Lập Trình Sự Kiện Trên Android - 123doc
-
Tổng Quan Về Sự Kiện đầu Vào | Android Developers
-
3 Phương Pháp Bắt Sự Kiện Click Cho View Android
-
[Android Căn Bản] Bài 4:Bắt Sự Kiện Trong Android. - TUAN DC
-
Tạo Ra Trải Nghiệm Người Dùng Chỉn Chu Hơn - Android Developers
-
[PDF] BÀI 5: KỸ THUẬT LẬP TRÌNH CƠ BẢN TRONG ANDROID - EHOU