199

Tôi đã làm việc trên các mảnh và đi qua hai điều ActivityFragmentActivity được sử dụng nhiều lần. Tôi muốn biết rằng có sự khác biệt giữa hai điều này, bởi vì khi tôi thay đổi Activity với FragmentActivity, nó không ảnh hưởng đến ứng dụng.Sự khác biệt giữa hoạt động và FragmentActivity

Trả lời

274

A FragmentActivity là một phân lớp của Activity được tạo cho Android Support Package.

Lớp FragmentActivity 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 ngoài ra, thực sự không có nhiều khác biệt giữa hai phiên bản. Chỉ cần đảm bảo bạn thay đổi tất cả các cuộc gọi thành getLoaderManager()getFragmentManager() thành getSupportLoaderManager()getSupportFragmentManager() tương ứng.

+4

Hey 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. – Rookie

+25

Đó là những gì làm cho nó rất nguy hiểm: P. 'FragmentActivity' kế thừa các phương thức' getLoaderManager' và 'getFragmentManager' từ' Activity' và kết quả là trình biên dịch sẽ không phàn nàn.Có thể bạn đang nhập các lớp 'LoaderManager' và' FragmentManager' không chính xác. Đảm bảo bạn đang nhập các lớp này từ gói hỗ trợ ('android.support.v4.app'), * không * SDK Android (' android.app'). –

+1

Chúng ta có thể nói rằng nếu chúng ta muốn sử dụng các mảnh cho phiên bản 2.x android, chúng ta cần sử dụng FragmentActivity nad cho phiên bản hỗ trợ các đoạn mà chúng ta cần sử dụng Activity. – Rookie

8
  1. Fragment là một phần của hoạt động, đóng góp giao diện người dùng riêng cho hoạt động đó. Fragment có thể được coi như một hoạt động phụ. Ở đâu là màn hình hoàn chỉnh mà người dùng tương tác được gọi là hoạt động. Một hoạt động có thể chứa nhiều phân đoạn. Phần lớn là phần phụ của hoạt động.

  2. Một hoạt động có thể chứa 0 hoặc nhiều số phân đoạn dựa trên kích thước màn hình. Một mảnh có thể được tái sử dụng trong nhiều hoạt động, do đó, nó hoạt động như một thành phần có thể tái sử dụng trong các hoạt động.

  3. Một đoạn không thể tồn tại độc lập. Nó phải luôn là một phần của một hoạt động. Nơi hoạt động có thể tồn tại với bất kỳ mảnh nào trong đó.

+20

Đó là một câu trả lời thực sự tốt đẹp và hoàn toàn đúng ... nhưng không phải là câu hỏi đã được hỏi ở đây vì nó thậm chí không đề cập đến FragmentActivity và tất nhiên nó không giải thích nó là gì, nó chỉ giải thích Fragments and Activity, nhưng không chính xác là một FragmentActivity. Nếu tôi hỏi bạn tình yêu là gì, đó không phải là câu trả lời nếu bạn nói cho tôi biết "tình yêu" là gì và "lỗi" là gì, đó không phải là câu trả lời cho câu hỏi của tôi. – Mecki

+3

Không phải là câu trả lời cho câu hỏi. – ToolmakerSteve

1

Bạn có thể nhận tất cả chức năng của Activity từ FragmentActivity. Trên thực tế, FragmentActivity có nhiều chức năng hơn).

Sử dụng FragmentActivity bạn có thể dễ dàng tạo tab và định dạng hoán đổi. Đối với mỗi tab, bạn có thể sử dụng khác nhau Fragment (Phân đoạn có thể sử dụng lại). Vì vậy, đối với bất kỳ FragmentActivity bạn có thể sử dụng lại cùng một Phân đoạn.

Tuy nhiên, bạn có thể sử dụng Hoạt động cho các trang đơn lẻ như danh sách xuống phần nào đó và chỉnh sửa phần tử của danh sách ở trang tiếp theo.

Hãy nhớ sử dụng Activity nếu bạn đang sử dụng android.app.Fragment; sử dụng FragmentActivity nếu bạn đang sử dụng android.support.v4.app.Fragment. Không bao giờ đính kèm số android.support.v4.app.Fragment vào số android.app.Activity, vì điều này sẽ gây ra ngoại lệ.

0

FragmentActivity là một phần của support library, trong khi Activity là lớp mặc định của khung. Chúng có chức năng tương đương.

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

+1

Lưu ý: 'minSdkVersion' của thư viện hỗ trợ là 14 kể từ phiên bản 26.x.x. –

Các vấn đề liên quan