Câu hỏi Android - Hoạt động so với FragmentActivity? [bản sao]


Câu hỏi này đã có câu trả lời ở đây:

Tôi mới trong Android. Tôi muốn xây dựng một ứng dụng với định dạng tab. Tôi tìm thấy nhiều tài liệu Activity đã được dùng. Cũng trong nhiều trường hợp đã sử dụng FragmentActivity. Tôi không chắc chắn sẽ tốt hơn để bắt đầu. Vui lòng đề nghị tôi nên sử dụng Activity hoặc là FragmentActivity để bắt đầu phát triển ở định dạng tab?


76
2018-03-10 03:18


gốc




Các câu trả lời:


ianhanniballake là đúng. Bạn có thể nhận được tất cả các chức năng của Activity từ FragmentActivity. Trong thực tế, FragmentActivity có nhiều chức năng hơn).

Sử dụng FragmentActivity bạn có thể dễ dàng xây dựng tab and swap định dạng. Đối với mỗi tab, bạn có thể sử dụng khác nhau Fragment (Fragments có thể tái sử dụng). Vì vậy, cho bất kỳ FragmentActivity bạn có thể sử dụng lại Fragment.

Bạn vẫn có thể sử dụng Activity cho các trang đơn lẻ như danh sách xuống và chỉnh sửa phần tử của danh sách trong trang tiếp theo.

Cũng 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 android.support.v4.app.Fragment đến một android.app.Activity, vì điều này sẽ gây ra một ngoại lệ để được ném.


112
2018-03-10 03:36



FYI, tôi đã tìm thấy một số cuộc thảo luận hay về Fragment Android bằng một ngôn ngữ khác tại đây Fragment trong Android - UmbalaAZ
NHƯNG xem câu trả lời của @ ianhanniballake: trừ khi nhắm mục tiêu API cũ hơn API 11, bạn có thể dùng Activity thay vì FragmentActivityvà vẫn có quyền truy cập vào Fragments; điều này câu trả lời không hoàn toàn nói rằng (mặc dù đoạn cuối ngụ ý rằng). - ToolmakerSteve
Như chúng ta đã biết, phần lớn chúng ta có BaseActivity trong dự án của chúng ta, và tất cả các hoạt động khác sẽ mở rộng nó. Nhưng khi nói đến FragmentActivity, chúng ta không thể làm điều đó. Vì vậy, tôi không sử dụng FragmentActivity ngay cả trong trường hợp tab. - Allen Vork


FragmentActivity cung cấp cho bạn tất cả các chức năng của Activity cộng với khả năng sử dụng Mảnh vỡ rất hữu ích trong nhiều trường hợp, đặc biệt khi làm việc với ActionBar, đó là cách tốt nhất để sử dụng Tab trong Android.

Nếu bạn là chỉ có nhắm mục tiêu Honeycomb (v11) hoặc các thiết bị lớn hơn, sau đó bạn có thể sử dụng Activity và sử dụng các phân đoạn gốc được giới thiệu trong v11 mà không có vấn đề gì. FragmentActivity được xây dựng đặc biệt như một phần của Thư viện hỗ trợ để quay lại một số tính năng hữu ích (chẳng hạn như Fragments) trở lại các thiết bị cũ hơn.

Tôi cũng nên lưu ý rằng bạn có thể sẽ tìm thấy Khả năng tương thích ngược - Triển khai tab đào tạo rất hữu ích trong tương lai.


53
2018-03-10 03:28



@ A - C - Tôi đã chỉnh sửa câu trả lời của mình - bạn chính xác rằng các thiết bị API 11+ có thể sử dụng Phân đoạn gốc và lớp Hoạt động bình thường. - ianhanniballake
Tôi sẽ thách thức khẳng định rằng lớp Activity bình thường có thể được sử dụng như một Fragment trong API11 +. Điều này dường như đã thay đổi trong KitKat. Xem android.googlesource.com/platform/frameworks/base.git/+/… - cmarcelk
@cmarcelk - không chắc chắn 'lớp Hoạt động bình thường có thể được sử dụng như một mảnh' có nghĩa là gì - tôi đã nói rằng android.app.Activity làm việc với android.app.Fragment, không phải bất cứ thứ gì về chúng có thể hoán đổi cho nhau. - ianhanniballake
@cmarcelk trong API11 + Activity có thể truy cập mảnh vỡ; FragmentActivity không còn cần thiết nữa. Hoạt động hoặc FragmentActivity không phải là Fragments. - ToolmakerSteve


Nếu bạn sử dụng trình thủ thuật "Dự án Android mới" của Eclipse trong gói ADT gần đây, bạn sẽ tự động nhận các tab được triển khai dưới dạng Phân đoạn. Điều này làm cho việc chuyển đổi ứng dụng của bạn sang định dạng máy tính bảng dễ dàng hơn nhiều trong tương lai.

Đối với bố cục màn hình đơn giản, bạn vẫn có thể sử dụng Activity.


3
2018-03-10 03:28