Sự khác biệt giữa Activity và FragmentActivity


228

Tôi đang làm việc trên các mảnh vỡ và tình cờ thấy hai thứ ActivityFragmentActivityđược sử dụng nhiều lần. Tôi muốn biết đó là có bất kỳ sự khác biệt giữa hai, bởi vì khi tôi đã thay đổi Activityvới FragmentActivity, nó không có ảnh hưởng đến các ứng dụng.

Câu trả lời:


316

A FragmentActivitylà một lớp con Activityđược xây dựng cho Gói hỗ trợ Android .

Các FragmentActivitylớp bổ sung thêm một vài phương pháp mới để đảm bảo khả năng tương thích với các phiên bản Android cũ hơn, nhưng khác hơn thế, đó thực sự là không nhiều sự khác biệt giữa hai người. Chỉ cần chắc chắn rằng bạn thay đổi tất cả các cuộc gọi đến getLoaderManager()getFragmentManager()để getSupportLoaderManager()getSupportFragmentManager()tương ứng.


4
Xin chào, tôi đã không thay đổi các cuộc gọi đến getSupportLoaderManager () và getSupportFragmentManager () .. nhưng nó vẫn hoạt động tốt.
Tân binh

31
Đó là điều làm cho nó rất nguy hiểm: P. FragmentActivitykế thừa getLoaderManagergetFragmentManagercác phương thức từ Activityvà kết quả là trình biên dịch sẽ không phàn nàn. Có thể bạn đang nhập sai LoaderManagerFragmentManagercác lớp quá. Đảm bảo bạn đang nhập các lớp này từ gói hỗ trợ ( android.support.v4.app), chứ không phải SDK Android ( android.app).
Alex Lockwood

1
Chúng tôi có thể nói rằng nếu chúng tôi muốn sử dụng các đoạn cho phiên bản Android 2.x, chúng tôi cần sử dụng FragmentActivity nad cho phiên bản hỗ trợ các đoạn mà chúng tôi cần sử dụng Activity.
Tân binh

55
Tôi nghĩ những gì bạn đang nói là chính xác. Nhưng chỉ cần rõ ràng 100% ... sử dụng Activitynếu bạn đang sử dụng android.app.Fragment; sử dụng FragmentActivitynếu bạn đang sử dụng android.support.v4.app.Fragment. Không bao giờ đính kèm android.support.v4.app.Fragmentmột android.app.Activity, vì điều này sẽ gây ra một ngoại lệ được ném.
Alex Lockwood

13
Trước tiên hãy thử hướng dẫn này (cách sử dụng Fragmentstrong một ứng dụng). Sau đó, tiếp tục hướng dẫn này (cách sử dụng Fragments từ gói hỗ trợ). Các tài liệu trên trang web của nhà phát triển cũng đáng đọc.
Alex Lockwood

4

FragmentActivitylà một phần của thư viện hỗ trợ , trong khi đó Activitylà lớp mặc định của khung. Chúng tương đương về chức năng.

Bạn nên luôn luôn sử dụng FragmentActivityandroid.support.v4.app.Fragmentthay vì các lớp Activityvà mặc định nền tảng android.app.Fragment. Sử dụng mặc định nền tảng có nghĩa là bạn đang dựa vào bất kỳ triển khai phân mảnh nào được sử dụng trong thiết bị bạn đang chạy. Chúng thường có nhiều năm tuổi và chứa các lỗi đã được sửa trong thư viện hỗ trợ.


1
Lưu ý: minSdkVersioncủa thư viện hỗ trợ là 14 kể từ phiên bản 26.xx
Eugen Pechanec
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.