Mục lục:
Video: BÀI TẬP LẬP TRÌNH JAVA 8.1 - SẮP XẾP SINH VIÊN TĂNG DẦN VỀ ĐIỂM 2025
Khi bạn bắt đầu một dự án Java mới, Android Studio đề xuất tạo một hoạt động cho dự án của bạn. Android Studio cung cấp cho bạn một số loại hoạt động khác nhau, chẳng hạn như Hoạt động cơ bản, Hoạt động rỗng, Hoạt động đăng nhập, v.v. Nếu bạn yêu cầu một Hoạt động rỗng, bạn sẽ nhận được mã này:
gói com. allyourcode. a10_11;
nhập khẩu Android. ủng hộ. v7. ứng dụng. AppCompatActivity;
nhập khẩu android. os. Bó;
Lớp MainActivity công khai mở rộng AppCompatActivity {
@Override
được bảo vệ void onCreate (Bundle savedInstanceState) {
siêu. onCreate (savedInstanceState);
setContentView (bố cục R. activity_main);
}
}
Mã tuyên bố một lớp có tên
MainActivity
. Tên này
MainActivity
không phải là một phần của thư viện API Android. Đó là tên mà bạn tạo nên khi tạo một dự án Android mới. (Thực tế, Android Studio tạo nên tên Bạn chấp nhận tên hoặc thay đổi tên này sang một số tên khác khi bạn làm theo các bước để tạo dự án mới)
Lớp
MainActivity
mở rộng một lớp học thuộc về vào thư viện SDK của Android, cụ thể là lớp
AppCompatActivity
. Nói cách khác, đối tượng
MainActivity
là đối tượng
AppCompatActivity
. Đối tượng
MainActivity
có tất cả các quyền và trách nhiệm mà bất kỳ cá thể
AppCompatActivity
nào có. Ví dụ,
MainActivity
có phương pháp
onCreate
, nó ghi đè.
kế thừa khoảng 460 dòng mã từ lớp Android
AppCompatActivity
của Android, được thừa kế khoảng 1 000 dòng từ
của Android> FragmentActivity
, được thừa hưởng khoảng 6, 700 dòng từ lớp Hoạt động của Android. Các phương thức thừa kế bao gồm các phương thức như
getCallingActivity
,
getCallingPackage
,
getParent
,
getTitle
,
getTitleColor
,
onKeyDown
,
onKeyLongPress
,
onLowMemory
,
onMenuItemSelected
,
setTitle <,
setTitleColor
,
startActivity
, kết thúc, và nhiều, nhiều người khác. Bạn kế thừa tất cả các chức năng này bằng hai từ đơn giản: mở rộng
AppCompatActivity
.
Trong thuật ngữ của mối quan hệ gia đình, lớp
MainActivity
của bạn là hậu duệ của lớp
Hoạt động
của Android. Lớp
MainActivity
của bạn là một loại
Hoạt động
.
Ảnh này, được chụp trực tiếp từ tài liệu trực tuyến của Android, tóm tắt thông tin này về lớp
AppCompatActivity
.
Một cây gia đình AppCompatActivity.
Đánh dấu trang để dễ dàng truy cập tài liệu thư viện API của Android.
Ngoài lớp Subclass, lớp
AppCompatActivity
thực hiện một loạt các giao diện, bao gồm giao diện
, giao diện
TaskStackBuilder
và các thành phần khác. Bạn không phải nhớ bất kỳ điều này. Nếu bạn cần biết nó, bạn có thể tìm nó trên trang tài liệu của Android.
Từ khóa siêu của Java, được xem lại
Từ
siêu
là viết tắt của nhà xây dựng lớp cha. Mã khác nhau đã sử dụng từ khóa
siêu
theo nhiều cách khác nhau. Có,
siêu
luôn có điều gì đó liên quan đến lớp phụ huynh của lớp. Tuy nhiên, không,
siêu
không phải lúc nào cũng đề cập đến hàm tạo của lớp phụ huynh.
Trong phương pháp
onCreate
, cuộc gọi
siêu. onCreate (savedInstanceState)
gửi
savedInstanceState
đến phương thức
onCreate
của lớp phụ huynh. Lớp cha mẹ là lớp
AppCompatActivity
. Vì vậy, Java gọi phương thức
AppCompatActivit
y class>
onCreate
.
AppCompatActivity
của lớp
onCreat e phương pháp có chứa cuộc gọi riêng của mình đến
siêu. onCreate (savedInstanceState)
. Phụ huynh của lớp
AppCompatActivity
là lớp
FragmentActivity
. Vì vậy, Java vượt qua
savedInstanceState
đến
FragmentActivity
lớp
onCreate
phương pháp. Và như vậy.
Không phải cho đến khi bạn đến lớp
Hoạt động
- bạn của cháu lớp ainActivity
của lớp - rằng mã sử dụng trực tiếp biến
savedInstanceState
. Từ thông tin
savedInstanceState
này, mã sẽ đặt lại hoạt động trở lại theo cách nó trước khi hệ thống phá hủy nó.
Casting, một lần nữa
Khi bạn gọi
findViewById
, Java không biết loại nó sẽ tìm thấy. Phương thức
findViewById
luôn trả về một thể hiện
Xem
, nhưng nhiều lớp của Android mở rộng lớp
Xem
. Ví dụ: các lớp
Nút
,
TextView
,
ImageView
,
CheckBox
,
Chronometer
và
RatingBar
tất cả đều mở rộng lớp
Xem
của Android. Nếu bạn gõ mã sau đây:
// KHÔNG NÊN! !
TextView textView;
textView = findViewById (R id id. TextView);
Java cho phép một tiếng gầm vang dội vang dội: "Làm thế nào mà bạn cho rằng đối tượng được trả về bởi một cuộc gọi tới
findViewById
là một ví dụ của lớp
TextView
! "
Việc thu hẹp
có nghĩa là cố gắng gán một giá trị
dài
cho
(Thực tế, Java lặng lẽ và máy móc hiển thị thông báo lỗi
Thông báo lỗi không tương thích
trong trình chỉnh sửa của Android Studio). > int giá trị. Giá trị
dài có 64 bit và giá trị
int
chỉ có 32 bit. Vì vậy, nỗ lực thu hẹp không thành công. Trong đoạn mã bạn tìm thấy ở đây, cuộc gọi
findViewById
xấu là một nỗ lực thu hẹp - gán giá trị
Xem
trả về bằng một cuộc gọi phương thức đến biến
TextView
.Lớp
TextView
là một phân lớp của lớp
Xem
, vì vậy nhiệm vụ không thành công một cách thảm hại.
xoa dịu các vị thần Java bằng cách thêm một toán tử đúc vào mã. Bạn nói với Java để chuyển đổi bất cứ điều gì xuất hiện trong
findViewById
phương thức gọi vào đối tượng
TextView
.
textView =
(TextView)
findViewById (R. Id. TextView1);
Trong khi bạn đang nhập mã, Java hài hước và nói: "Nhà điều hành truyền của bạn cho thấy rằng bạn đã biết sự khác biệt giữa
TextView
và
Xem . Tôi sẽ cố gắng hết sức để giải thích đối tượng Xem
mà tôi tìm thấy tại thời gian chạy như đối tượng
TextView
. "Thực tế, trong khi bạn đang nhập mã, Java không nói gì cả Thực tế là Java không hiển thị bất kỳ thông báo lỗi nào khi bạn sử dụng công cụ đúc này là một dấu hiệu tốt.. Tính năng đúc của Java giúp tiết kiệm thời gian!
Casting ngăn cản bạn nhìn thấy một thông báo lỗi trong khi bạn phát triển mã của bạn. Theo cách đó, đúc là một tính năng khá hữu ích của Java. Nhưng việc truyền dữ liệu không thể cứu bạn nếu mã của bạn có lỗi runtime. Khi bạn gõ
textView = (TextView) findViewById (R id id. TextView1);
bạn xác minh rằng tên
textView
đại diện cho một widget
TextView
. Khi chạy ứng dụng, Java sẽ lấy phần
R. ID. textView
widget từ
activity_main. xml
, và mọi thứ hoạt động tốt. Nhưng đôi khi bạn quên kiểm tra
R. java đối với các thành phần trong tệp tin XML. Một cuộc gọi tới
findViewById
đáng ngạc nhiên là nhổ ra một thành phần
Nút
khi đúc cho Java để mong đợi một widget
TextView
. Khi điều này xảy ra, trình phát cuộn trên trình điều khiển đúc và ứng dụng của bạn bị treo trong quá trình chạy. Trở lại với bản vẽ!