Findviewbyid là gì

[Android căn bản] Bài 4:Bắt sự kiện trong Android.

Cập nhật lần cuối: 01 Tháng Tư 2018
  • Lập trình Android
2,286 Lượt xem
Đánh giá bài viết

Xin chào các bạn chúng ta lại gặp nhau trong Series Android căn bản truyền kì. Ở bài trước mình đã giới thiệu với các bạn về các loại layout của android và các sắp xếp các view vào các layout của Android và các layout này có thể kết hợp với nhau để tạo nên giao diện cho ứng dụng của bạn. Hôm nay tôi sẽ giới thiệu với các bạn cách để bắt sự kiện của các view, control trong Android.

Giới thiệu.

Trong chúng ta ai cũng dùng điện thoại để lướt Facebook, chơi game, nghe nhạc và sử dụng các ứng dụng đúng không nào và bạn có thấy là khi bạn nhấn vào một nút nào đó thì sẽ có một công việc nào đó được thực hiện đúng không như bạn đăng nhập vào ứng dụng Facebook thì khi bạn nhấn đăng nhập thì ứng dụng bắt đầu đăng nhập vào tài khoản của bạn đúng không nào, vậy làm thế nào để làm được việc đó trong Android.

Ví dụ tôi có 1 ứng dụng đơn giản màn hình bao gồm một Button và một Textview khi tôi nhấn cái Button thì sẽ hiển thị câu xin chào mọi người lên Textview.

Ví dụ sự kiện trong Android

Giao điện khá đơn giản phải không nào, đây là code giao diện:

Như tôi đã nói ở bài trước đây mới chỉ là cái giao diện mặt ngoài của ứng dụng mà thôi khi bạn nhấn vào cái nút press kia thì cũng chả có chuyện gì xảy ra đâu, vì thế chúng ta cần lập trình cho phần hồn của cái Activity này. Trong Android có rất nhiều cách để gán sự kiện cho view nhưng tôi xin giới thiệu hai cách hay được sử dụng nhất còn mấy cách kia nếu bạn có hứng thú vui lòng tự tìm trên Internet.

Tôi xin giới thiệu cách ánh xạ các View trong Android và hai cách gán sự kiện thường được sử dụng là:Anonymous Event vàVariables Event Listerner.

Ánh xạ các view của Android.

Trong Android muốn sử dụng được các View trên file XML đã thiết kế thì chúng ta phải ánh xạ chúng trong file Java của Android, trong ví dụ trên tôi có Button Press có id làbtn_press và Textview có id là tv_hello giờ tôi sẽ ánh xạ nó như sau:

package com.tuandc.project1.project1; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { TextView tv_Hello; Button btn_press;// Khởi tạo hai biến TextView và Button để chuẩn bị ánh xạ các control @Override protected void onCreate[Bundle savedInstanceState] { super.onCreate[savedInstanceState]; setContentView[R.layout.activity_main]; tv_Hello = [TextView] findViewById[R.id.tv_hello]; // sử dụng findViewById để tìm và ánh xạ control tù File Xml vào biến tv_Hello btn_press = [Button] findViewById[R.id.btn_press]; } }

Và như bạn thấy tôi sử dụng hai biến có kiểu là TextView và Button để ánh xạ các control trên file XML vào hai biến này trong câu lệnhfindViewById bạn thấy có tham số truyền vào là R.id.tv_hellođây chính là id của TextView trên file XML và khi bạn đặt một id cho một view/control nào trong file XML thì nó sẽ được Android lưu vô hệ thống.

OK vậy là xong phần ánh xạ giờ là gán sự kiện.

Anonymous Event

Anonymous Event nếu dịch ra tiếng việt thì là sự kiện nặc danh và đúng như tên gọi của nó với cách gán sự kiện này ta sẽ không gán trực tiếp vào control/view trong file XML thông qua thuộc tính onClick mà ta sẽ gán sự kiện trong file Java lúc các control/view đã được ánh xạ.

Cách gán như sau.

package com.tuandc.project1.project1; 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 { TextView tv_Hello; Button btn_press;// Khởi tạo hai biến TextView và Button để chuẩn bị ánh xạ các control @Override protected void onCreate[Bundle savedInstanceState] { super.onCreate[savedInstanceState]; setContentView[R.layout.activity_main]; tv_Hello = [TextView] findViewById[R.id.tv_hello]; // sử dụng findViewById để tìm và ánh xạ control tù File Xml vào biến tv_Hello btn_press = [Button] findViewById[R.id.btn_press]; // Gán sự kiện click cho Button btn_press.setOnClickListener[new View.OnClickListener[] { @Override public void onClick[View view] { tv_Hello.setText["Xin chào mọi người"];// Gán chuôi Xin chào mọi người cho TextView } }]; } }

Như bạn thấy có một phương thứcsetOnClickListener được gọi tại btn_press và khi ta new Phương thước View.OnClickListener[] thì nó sẽ Override lại phương thức onClick và ta sẽ viết code xử lí trong phương thức này.

Và trên đây là cách gán sự kiệnAnonymous Event.sau đây tôi xin giới thiệu với các bạn cách gán sự kiệnVariables Event Listerner

Variables Event Listerner.

Cách gán thứ hai làVariables Event Listerner, cách này ta sẽ dung một biến trung gian để lưu sự kiện của control và cách này ta có thể viết xử lý sự kiện một cách tập trong nhất..

Code:

package com.tuandc.project1.project1; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { TextView tv_Hello; Button btn_press;// Khởi tạo hai biến TextView và Button để chuẩn bị ánh xạ các control View.OnClickListener ClickEvent = null; @Override protected void onCreate[Bundle savedInstanceState] { super.onCreate[savedInstanceState]; setContentView[R.layout.activity_main]; tv_Hello = [TextView] findViewById[R.id.tv_hello]; // sử dụng findViewById để tìm và ánh xạ control tù File Xml vào biến tv_Hello btn_press = [Button] findViewById[R.id.btn_press]; // Khởi tao gia trị cho biến ClickEvent ClickEvent = new View.OnClickListener[] { @Override public void onClick[View v] { switch [v.getId[]] { case R.id.btn_press: tv_Hello.setText["Xin chào mọi người"]; break; } } }; btn_press.setOnClickListener[ClickEvent];// Gán biến sự kiện cho control } } Như bạn thấy tham số truyền vào phương thức setOnClickListener[] là biến ClickEvent mà ta đẫ tạo ở trên

Và đây là kết quả khi chạy của hai cách gán sự kiện trên.

Kết quả chạy ví dụ

Vật là tôi đã giới thiệu với các bạn cách ánh xạ các control cũng như cách gán sự kiện cho các control này trong Android xin cảm ơn các bạn đã theo dõi hẹn gặp lại các bạn sau.

Góc xả stress: bạn thấy đấy lập trình rất kì diệu và đau não đúng không nào vậy để xả stress tôi có 1 câu hỏi sau :v

Nếu như có một em robot như thế này:

Bạn sẽ lập trình em này như thế nào.

vậy bạn sẽ lập trình và gán hành động gì cho em này ?.

Đánh giá bài viết
Tags gán sự kiệnjavalập trình android
Bài liên quan
1,043 Lượt xem Sử dụng thư viện Paging Library trong Android
1,684 Lượt xem Cách phân trang trong Recyclerview
2,788 Lượt xem Lập trình socket trong Android.
4,122 Lượt xem Sử dụng Notification trong Android
1,532 Lượt xem Sử dụng Snackbar trong Android
4,792 Lượt xem [Android căn bản] Bài 15: Kết nối SQL Server trong Android.
1,570 Lượt xem [Android căn bản] Bài 14: Sử dụng SQLite trong Android.
2,418 Lượt xem [Android căn bản] Bài 13: Xử lý Json trong Android
1,446 Lượt xem [Android căn bản] Bài 12: Bộ nhớ trong và bộ nhớ ngoài trong Android.

Video liên quan

Chủ Đề