2013-02-05 36 views
7

Tôi đang học những mảnh vỡ nhưng tôi không hiểu ý nghĩa đằng sau lý do tại sao các mảnh vỡ đòi hỏi một Container.Mục đích của Container trong Fragments cho Android

Con đường tôi hiểu Những mảnh vỡ công việc là như sau:

  1. FragmentActivity setContentView đề cập đến một tập tin xml đó xác định nơi các mảnh vỡ sẽ được đặt.

  2. FragmentActivity tạo ra thể hiện của các mảnh vỡ

  3. Sau đó gán đoạn để chứa.

  4. Trình quản lý phân đoạn sẽ hiển thị chúng.

  5. Lớp Fragment thực tế sau đó thổi phồng bố cục và bố cục này là chứa tất cả các thành phần giao diện người dùng ứng dụng.

(hãy sửa tôi nếu tôi bỏ lỡ điều gì đó ở đây vì tôi chỉ đang học vào lúc này). Vì vậy, tại sao mục đích của Container tại sao chúng ta thậm chí cần vì trong tất cả các ví dụ tôi đã thấy nó chỉ là một tài liệu xml bố cục tương đối trống.

Các phân đoạn khác nhau có thể chia sẻ cùng một Vùng chứa không (vì nó chỉ là một tệp xml RelativeLayout)?

Vì vậy, trong ví dụ được cung cấp bởi google http://developer.android.com/training/basics/fragments/creating.html

Họ có một ListFragment và khi mục được lựa chọn thông qua việc sử dụng các giao diện CallBack chúng tôi cuối cùng đã lấy lại cho dòng mã này:

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack so the user can navigate back 
transaction.replace(R.id.fragment_container, newFragment); 

My câu hỏi khác là:

1) Tại sao dòng mã này không thay thế ListFragment (mảnh bên trái) với đoạn bài viết. Kể từ khi nó được khởi tạo, chúng ta thấy:

getSupportFragmentManager().beginTransaction() 
        .add(R.id.fragment_container, firstFragment).commit(); 

Thay vào đó ... ListFragment vẫn ở bên trái và bên phải Phân đoạn được cập nhật. Nhưng fragment_container container thuộc về firstFragment, đây là ListFragment. Và đây không phải là bản cập nhật.

Bạn có thấy tại sao tôi có câu hỏi không? Điều này không được giải thích trong hướng dẫn.

Trả lời

3

đây: http://marakana.com/s/post/1250/android_fragments_tutorial

Và ở đây: http://developer.android.com/guide/components/fragments.html

đọc này và tất cả sẽ được rõ ràng :)

Fragment là một phần của hoạt động và chỉ có thể tồn tại bên trong một hoạt động. Vì vậy, bạn cần một loại hoạt động đặc biệt có thể xử lý phân mảnh - đó là FragmentActivity.

FragmentActivity without Fragments gần giống như Hoạt động bình thường.Nhưng nó có một FragmentManager để quản lý (thêm, loại bỏ, thay thế) các mảnh vỡ. Khi bạn muốn thêm một Fragment vào FragmetnActivity, bạn nên xác định vị trí cần đặt nó (vì đoạn không cần phải toàn màn hình, giống như GooglePlay-có nhiều mảnh nhỏ). Vì vậy, đây là lý do tại sao bạn cần một container.

Các phân đoạn khác nhau có thể chia sẻ cùng một Vùng chứa không (vì nó chỉ là tệp RelativeLayout xml)?

Có thể, bạn có thể thay thế một đoạn bằng một đoạn khác trong cùng một vùng chứa.

+3

Tuyên bố "Vì vậy, bạn cần một loại hoạt động đặc biệt có thể xử lý phân đoạn - đó là FragmentActivity". đúng với các phiên bản Android cũ hơn và khi bạn đang sử dụng thư viện hỗ trợ. Trong phiên bản hiện tại (ví dụ: Android API 19), Hoạt động mặc định đã có chức năng phân đoạn. Ví dụ. hàm getFragmentManager(): http://developer.android.com/reference/android/app/Activity.html#getFragmentManager() – treesAreEverywhere

+0

Làm thế nào để thay thế một đoạn cụ thể trong vùng chứa chứa nhiều đoạn bằng một đoạn mới? –

+0

Việc thay thế các đoạn không giống với các đoạn khác nhau chia sẻ cùng một vùng chứa. Hai mảnh không thể chia sẻ một thùng chứa nếu một cái đã được thay thế bởi cái khác. – craned

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