Câu hỏi của tôi nằm ngoài sự khác biệt thừa kế rõ ràng, sự khác biệt chính giữa Fragment
và FragmentActivity
là gì? Mỗi trường hợp nào phù hợp nhất với kịch bản nào? Tôi đang cố gắng hiểu rõ lý do tại sao cả hai lớp này tồn tại ...Sự khác biệt giữa Fragment Và FragmentActivity
Trả lời
Một Fragment
là một phần của một Activity
, trong đó có:
- vòng đời riêng của mình
- nhận sự kiện đầu vào riêng của mình
- có thể được thêm vào hoặc gỡ bỏ trong khi
Activity
đang chạy.
A Fragment
phải luôn được nhúng trong Activity
.
Fragments
không phải là một phần của API trước HoneyComb (3.0). Nếu bạn muốn sử dụng Fragments
trong ứng dụng nhắm mục tiêu phiên bản nền tảng trước HoneyComb, bạn cần thêm Support Package vào dự án của mình và sử dụng FragmentActivity
để giữ Fragments
. Lớp FragmentActivity
có API để xử lý Fragments
, trong khi lớp Activity
, trước HoneyComb thì không.
Nếu dự án của bạn đang nhắm mục tiêu HoneyComb hoặc mới hơn, bạn nên sử dụng Activity
và không FragmentActivity
để giữ Fragments
.
Một số chi tiết:
Sử dụng android.app.Fragment
với Activity
. Sử dụng android.support.v4.app.Fragment
với FragmentActivity
. Không thêm gói hỗ trợ Fragment
vào số Activity
vì nó sẽ khiến cho Ngoại lệ bị ném.
Một điều cần phải cẩn thận với: FragmentManager
và LoaderManager
có các phiên bản hỗ trợ riêng cho FragmentActivity:
Nếu bạn đang sử dụng một Fragment
trong một Activity
(Honeycomb trở lên), gọi
getFragmentManager()
để có đượcandroid.app.FragmentManager
getLoaderManager()
để nhậnandroid.app.LoaderManager
nếu bạn đang sử dụng một Fragment
trong một FragmentActivity
(pre-Honeycomb), hãy gọi:
getSupportFragmentManager()
để có đượcandroid.support.v4.app.FragmentManager
.getSupportLoaderManager()
để có đượcandroid.support.v4.app.LoaderManager
vậy, không làm
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
hoặc
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
Cũng hữu ích để biết là trong khi một mảnh vỡ đã được nhúng vào trong an Activity
nó không phải là một phần của bố trí Activity
. Nó có thể được sử dụng như một công nhân vô hình cho hoạt động, không có giao diện người dùng của riêng nó.
FragmentActivity là Hoạt động kinh điển của chúng tôi với hỗ trợ phân đoạn, không có gì khác. Do đó FragmentActivity là cần thiết, khi một Fragment sẽ được gắn vào Activity.
Vâng Phân đoạn là thành phần tốt sao chép hành vi cơ bản của Hoạt động, vẫn không phải là thành phần ứng dụng độc lập như Hoạt động và cần được đính kèm vào Hoạt động để hoạt động.
Look here để biết thêm chi tiết
BTW, Câu trả lời lỗi thời chỉ áp dụng cho các ứng dụng muốn hoạt động trên các thiết bị cũ hơn API 11. – ToolmakerSteve
@ToolmakerSteve bạn có thể cung cấp thêm chi tiết không? Nếu có thể, bạn có thể chỉnh sửa câu trả lời bằng phiên bản cập nhật không? –
một FragmentActivity là một hoạt động ad-hoc có chứa Fragment. Trong vài từ này tôi đã giải thích cho bạn một trong những thay đổi quan trọng chính, với android 3.0 (HoneyComb), nhóm Android đã đưa vào sdk android.
Với loại khái niệm mới này, các phần mã và bố cục của bạn trở nên linh hoạt và dễ bảo trì hơn. Nếu bạn tìm kiếm trên google có rất nhiều ví dụ.
Hãy suy nghĩ về FragmentActivity như một lớp Hoạt động thông thường có thể hỗ trợ Phân đoạn. Trước khi tổ ong, một lớp hoạt động không thể supoprt Fragments trực tiếp, vì vậy điều này là cần thiết trong các hoạt động sử dụng Fragments.
Nếu phân phối mục tiêu của bạn là Honeycomb và hơn thế nữa, bạn có thể mở rộng hoạt động thay thế.
Cũng một đoạn được coi là 'hoạt động phụ'. Nó không thể tồn tại mà không có hoạt động. Luôn luôn nghĩ về một mảnh như một hoạt động phụ và bạn nên tốt. Vì vậy, các hoạt động sẽ là cha mẹ và các mảnh (s) các loại con của mối quan hệ tượng trưng.
- 1. Sự khác biệt giữa hoạt động và FragmentActivity
- 2. Sự khác biệt giữa $ (...) và `...`
- 3. Sự khác biệt giữa. và #
- 4. Sự khác biệt giữa $ * và $ @
- 5. Sự khác biệt giữa ". +" Và ". +?"
- 6. Sự khác biệt giữa "**/* /" và "** /"?
- 7. Sự khác biệt giữa = và: =
- 8. Sự khác biệt giữa fragmentTransaction.hide và setVisibility (GONE);
- 9. Xem chế độ xem Fragment từ FragmentActivity
- 10. Sự khác biệt về sự khác biệt giữa Matplotlib giữa Agg và Cairo
- 11. Sự khác biệt giữa Html.RenderAction và Html.Action
- 12. Sự khác biệt giữa cookie và phiên?
- 13. Sự khác biệt giữa '.' và "." trong java
- 14. Sự khác biệt giữa SimpleDB và S3
- 15. C++ - Sự khác biệt giữa (*). và ->?
- 16. Sự khác biệt giữa offsetHeight và clientHeight
- 17. Sự khác biệt giữa RDLC và SSRS
- 18. Sự khác biệt giữa "\ n" và Environment.NewLine
- 19. Sự khác biệt giữa qt và PyQt4
- 20. Sự khác biệt giữa AForge và OpenCV
- 21. Sự khác biệt giữa toFixed() và toPrecision()?
- 22. sự khác biệt giữa cacao và cocoatouch
- 23. Sự khác biệt giữa smtpClient.send() và smtpClient.SendAsync()?
- 24. Sự khác biệt giữa window.location.host và window.location.hostname
- 25. Sự khác biệt giữa DTLS và TLS
- 26. Sự khác biệt giữa Mealy và Moore
- 27. sự khác biệt giữa createRfcommSocketToServiceRecord và createRfcommSocket
- 28. Sự khác biệt giữa Arrays.sort() và Arrays.parallelSort()
- 29. sự khác biệt giữa orm và pdo
- 30. Sự khác biệt giữa nproc và ulimit?
Tuy nhiên, một đoạn không bắt buộc phải là một phần của bố cục hoạt động; bạn cũng có thể sử dụng một đoạn mà không có giao diện người dùng riêng của mình làm công nhân vô hình cho hoạt động đó. – uzay95
@ uzay95 cảm ơn vì đã chỉ ra điều này. Tôi đã thêm một phần ở cuối để đề cập đến nó. –
@GunnarKarlsson Chúng ta sẽ thêm phân đoạn vào fragmentActivity? – Dhasneem