Đầu tiên mời các bạn theo dõi bài hướng dẫn cách khởi tạo 1 class mới kế thừa activity và cập nhật nó vào AndroidManifest.xml
http://android.vn/threads/24213/
Bây h Long sẽ nói về quy luật hoạt động của Activity, các bạn chú ý vào hình ảnh trong topic vừa rồi nhé.
Khi Activity khởi động nó sẽ thực hiện hàm onCreate() tức là khi chúng ta đã kế thừa rồi thì nó sẽ thực hiện đoạn onCreate() của chúng ta, cụ thể như sau:
protected void onCreate(Bundle savedInstanceState) {
//Thực hiện lại việc kế thừa
super.onCreate(savedInstanceState);
//Thiết lập giao diện sử dụng lấy từ giao diện activity_main.xml
setContentView(R.layout.activity_main);
}
hàm này sẽ chạy trước
nó sẽ thực hiện hàm onCreate() của lớp cha trước (ở đây lớp cha là Activity)
sau đó nó sẽ thực hiện setContentView(R.layout.activity_main);
tức là đính kèm cái giao diện XML mà chúng ta thiết kế
nó là activity_main.xml (theo ví dụ)
- Khi thực hiện onCreate xong thì hiển thị lên giao diện, ví dụ 1 giao diện nào đó cho bạn nhập dữ liệu vào ô EditText, sau rồi làm gì gì đó nữa …
- Cho đến khi bạn gọi 1 lớp khác, có thể là 1 Activity khác chồng lên Activity cũ
thằng Activity cũ này sẽ thực hiện việc onPause()
cụ thể ở đây giống như gấu bắc cực đi ngủ đông vậy :D
nó sẽ nằm ngủ cho đến khi 1 cái gì đó gọi nó dậy, ví dụ bạn Hủy đi thằng Activity vừa chồng lên nó
- Khi nó dậy, cụ thể là nó sau khi ngủ, dậy và hoạt động trở lại thì nó thực hiện hàm onResume()
chúng ta nếu cần thiết sẽ định nghĩa lại 2 thằng này nếu cần thiết
ví dụ sau khi ngủ dậy, ta thiết lập 1 đối số nào đó trở về 0, thì kế thừa thằng onResume() rồi trong hàm này ta đặt cho nó = 0
- onStop() là 1 cấp cao hơn, hãy tưởng tượng rằng 1 bài hát khi bạn bấm Stop khi Restart lại nó sẽ chạy bài hát đó lại từ đầu không giống như Pause và Play là dừng ở đâu thì chạy lại ngay ở vị trí đó
- onDestroy() khi bị phá hủy hoàn toàn, nó như 1 hơi thở cuối cùng của Activity vậy, trăng trối cái gì đó trước khi chết Vĩnh Viễn .
Kiến thức lý thuyết quả là hơi khô khan, nhưng các bạn chỉ cần hiểu sơ sơ như vậy là được, bây giờ thì chúng ta sẽ thực hành về onCreate() và làm cái gì đó trong thằng này!!!
bài thực hành ở hướng dẫn mẫu trong topic http://android.vn/threads/24214/
các bạn thử làm theo xem sao nhé
Phần tiếp theo Long sẽ giới thiệu về đối tượng Intent (các bạn chưa xong cứ làm phần thực hành cho xong đã nhé! lý thuyết từ từ đọc sau cũng được)
Đối tượng Intent là gì? Đơn giản theo ý nghĩa của nó là mục đích ... nhằm làm cái gì đó và thường là trong các ví dụ người ta sẽ gọi 1 Activity khác chồng lên Activity cũ
Cú pháp như sau: Intent myIntent = new Intent(<tên Activity hiện tại>.this, <tên Activity mới>.class);
<tên Activity hiện tại>.this.startActivity(myIntent);
ví dụ như Activity hiện tại là MainActivity và muốn chồng lên nó Activity 2 thì làm như sau:
tròng hàm onClick(), thêm 2 dấu // vào trước cái noiDungHienThi.setText("Xin chào thanhlong90.it");
khóa nó lại
enter xuống dòng thêm đoạn code:
Intent myIntent = new Intent(MainActivity.this, Activity2.class);
MainActivity.this.startActivity(myIntent);
Nhớ Activity2 phải được khai báo trong Manifest ko thôi xảy ra lỗi trong lúc chạy
chương trình sẽ bị rụng 1 cách đột ngột :D và nhớ luôn là phải phân biệt rõ ràng 2 cái: đôi tượng trong XML và đối tượng trong java nhé
Xong rồi hãy chạy thử chương trình, click vào nút button và chuyển qua Activity mới
Lưu ý 1 điều vô cùng quan trọng như sau, chỉ có thể có tối đa 10 cái Activity chồng lên nhau
nếu quá 10 bác Android sẽ tự dọn dẹp, thằng nào nằm dưới cùng sẽ bị onDestroy và vứt vô sọt rắc ^^
ngoài ra có 1 câu lênh như sau:
Intent myIntent = new Intent(MainActivity.this, Activity2.class);
MainActivity.this.startActivity(myIntent);
finish();
hàm finish() sẽ có nhiệm vụ sau khi bắt đầu activity mới sẽ cho em nằm dưới đi ngủ sớm
tức là kết thúc (onDestroy) bác activity này sau khi có 1 bác activity khác chồng lên
Về Intent không những có chức năng start Activity mới mà có kiêm luôn nhiệm vụ gửi theo 1 cái gì đó giống như hành lý vậy
nó có thể đính kèm theo 1 biến String, 1 biến Int, 1 biến boolean hay thậm chí 1 cái mảng dữ liệu cũng được tất
đơn giản như sau:
Intent myIntent = new Intent(MainActivity.this, Activity2.class);
Bundle myBundle = new Bundle();
myBundle.putString("ten", "thanhlong90.it");
myBundle.putInt("tuoi", 23);
myIntent.putExtras(myBundle);
MainActivity.this.startActivity(myIntent);
<<< Bundle giống như 1 cái bẫy zip nén nó vào hay giống như gói gém hành lý lại vậy
và trong activity mới sẽ nhận tiền bằng cách ghi rõ họ tên người gừi ký tên đóng dấu ...
Bundle gotBasket = getIntent().getExtras();
String hoten = gotBasket.getString("ten");
int sotuoi = gotBasket.getInt("tuoi");
Không có nhận xét nào:
Đăng nhận xét