2012-05-15 36 views

Trả lời

255

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: FragmentManagerLoaderManager 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ó được android.app.FragmentManager
  • getLoaderManager() để nhận android.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ó được android.support.v4.app.FragmentManager.
  • getSupportLoaderManager() để có được android.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ó.

+5

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

+1

@ 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ó. –

+0

@GunnarKarlsson Chúng ta sẽ thêm phân đoạn vào fragmentActivity? – Dhasneem

14

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

+1

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

+0

@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? –

1

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ụ.

8

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.

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