2011-12-21 26 views
94

Tôi biết lý do sử dụng phân đoạn và trang web dành cho nhà phát triển Android giải thích rõ điều này. Nhưng trong hầu hết các trường hợp, tôi muốn trên các máy tính bảng các bộ phận khác nhau có hành vi và giao diện người dùng đặc biệt của riêng họ và tôi không biết cách phân đoạn có thể giúp đỡ như thế nào. Trong hầu hết các trường hợp, tôi nghĩ rằng việc tạo 2 Hoạt động khác nhau nhanh hơn (1 cho máy tính bảng và 1 cho thiết bị cầm tay) và chia sẻ các hành vi và sự kiện phổ biến ở lớp thứ ba. Vì vậy, hãy nhớ điều này tại sao tôi nên sử dụng phân đoạn?Khi nào tôi nên sử dụng các đoạn trong ứng dụng Android? Tại sao sử dụng các mảnh?

Trả lời

69

Những mảnh vỡ là nhiều hơn một lợi ích UI theo ý kiến ​​của tôi. Thật thuận tiện cho người dùng đôi khi nhìn thấy hai chế độ xem khác nhau của hai lớp khác nhau trên cùng một màn hình. Nếu, trong khoảnh khắc sáng tạo của bạn, bạn quyết định sẽ hiển thị ứng dụng của mình tốt hơn, ví dụ: listView chiếm nửa màn hình và webView chiếm nửa còn lại - để khi bạn nhấp vào mục danh sách trong đoạn A Nó chuyển một ý định tới webView trong đoạn B, và đột nhiên bạn thấy những gì bạn vừa nhấp mà không cần các hoạt động chuyển đổi ứng dụng - sau đó bạn có thể sử dụng một đoạn. Đó chỉ là một ví dụ tôi nghĩ ra khỏi đỉnh đầu.

Dòng dưới cùng: Các mảnh là hai hoặc nhiều hoạt động trên màn hình cùng một lúc.

+61

Tại sao nên sử dụng các đoạn khi bạn có thể thực hiện chính xác điều tương tự với bố cục cha mẹ khác nhau và các lớp khác nhau? Dễ dàng hơn để có hai bố cục gốc, một cho danh sách và một bố cục khác cho webview. Tôi personaly nghĩ rằng câu trả lời của bạn là không chính xác như bạn chỉ nói những gì mảnh được sử dụng cho, không phải lý do tại sao bạn nên sử dụng nó thay vì một activty lưu trữ hai lớp học.Infact, có một hoạt động và lưu trữ hai lớp dễ dàng hơn vì bạn không cần phải đối phó với ý định và giao diện có thể chuyển đổi để sắp đặt từng hàng các đối tượng bạn muốn chuyển. bạn có quyền truy cập trực tiếp vào lớp học – jonney

+0

Vì vậy, việc sử dụng các phân đoạn cho biểu mẫu tìm kiếm được hiển thị trong nhiều hoạt động được khuyến nghị? – Muatik

+0

OMG Vì vậy, đây là cách một số ứng dụng hiện trượt "lượt xem" mới vào chế độ xem khi tôi nhấn vào nội dung nào đó? Vì vậy, để sử dụng một mảnh, chúng ta chỉ có (ví dụ) một tệp sơ đồ bố trí chính và sau đó sử dụng '' bên trong tệp đó cho dù chúng ta muốn bao gồm một đoạn không? Và có lẽ nếu chúng ta không muốn một mảnh để luôn luôn có hoặc là ẩn nó và hiển thị nó khi cần thiết hoặc tiêm nó khi cần thiết? – username

14

Google khuyên bạn LUÔN LUÔN sử dụng Phân đoạn.

Tại sao? Thật đơn giản:

Trong trường hợp đơn giản nhất, Phân đoạn được sử dụng như vùng chứa hoạt động.

Tại sao bạn cần điều này? Một lần nữa, nó đơn giản.

Android 4 (ICS) hỗ trợ cả Điện thoại thông minh và Máy tính bảng. Điều này có nghĩa là ứng dụng SAME sẽ chạy trên điện thoại thông minh và máy tính bảng và chúng có thể rất khác nhau.

Máy tính bảng có màn hình lớn sẽ trống hoặc không sử dụng - trừ khi bạn chỉ định đúng cách.

Điều đó có nghĩa - Đặt hai đoạn trên một hoạt động như Danh sách liên hệ và Thông tin liên hệ.

Smatphone sẽ hiển thị Danh sách liên hệ và trên màn hình cảm ứng, hiển thị Thông tin của liên hệ.

Trên máy tính bảng, người dùng sẽ vẫn thấy danh sách và thông tin sẽ ở bên cạnh danh sách đó.

2 đoạn trên một màn hình ....

Thông minh? vâng ... nghĩa vụ phải được trở lại tương thích xuống Android 1.6 ......


######################## ###########################

OK, Đã Biết Điều đó chưa? sau đó - chỉ cần cố gắng hiểu trường hợp đã được giải quyết:

Rất nhiều thứ hoạt động theo cách đó & chi tiết, Menu và Sub-Menu, Thông tin, Thông tin chi tiết và một số thông tin chi tiết hơn. Bạn muốn có một cách để giữ cho nó tự nhiên và mượt mà cho một máy tính bảng mà bạn mong đợi để làm ... Điện thoại

Tải xuống?

Thông tin thêm, hãy this. Tôi thực sự nghĩ rằng bạn chỉ cần để bắt các khái niệm ....

+0

Có khái niệm này là clear..But trong giao diện đơn giản, nơi các hoạt động khác nhau không có quan hệ trực tiếp và mọi hoạt động rất đơn giản một container của dữ liệu ..are fragments thực sự cần thiết? Tôi có thể tránh điều đó không? Và từ góc độ khác trong mọi trường hợp, chương trình phải được điều chỉnh để chạy trên màn hình khác nhau bất kể thực tế đó bạn sẽ sử dụng các đoạn hay không. –

+1

Bạn đúng, bạn không cần Fragments để hỗ trợ nhiều kích cỡ màn hình. Nhưng họ nên làm cho nó dễ dàng hơn. Bạn sẽ có thể tạo nhanh một đoạn giống hệt như hoạt động toàn màn hình trên điện thoại hoặc dưới dạng màn hình một phần trên máy tính bảng chỉ với một vài dòng mã để cho biết sự khác biệt. Ngoài ra, bởi vì các mảnh vỡ xử lý một số vòng đời của riêng mình, bạn có ít lo lắng hơn. – Sparky

+1

"Google khuyên bạn LUÔN LUÔN sử dụng Phân đoạn".? Tôi không đồng ý với nó. Cá nhân tôi nghĩ rằng nó chỉ hữu ích khi thiết bị được thiết kế chấm hiện tại một cửa sổ hoặc hai khung nhìn, theo kích thước của nó. – user1914692

55

Các lợi ích tôi thấy khi sử dụng mảnh là:

  • Encapsulation của logic.
  • Xử lý tốt hơn vòng đời của đoạn.
  • Có thể sử dụng lại trong các hoạt động khác.

Các nhược điểm tôi thấy là:

  • Nhiều mã (Ví dụ, instantiating một người quản lý mảnh, thêm các giao dịch đoạn, bằng văn bản cho callbacks của fragment)
  • Truyền thông giữa các mảnh vỡ và hoạt động khó hơn. Như @jonney cho biết, bạn sẽ cần phải đối phó với một giao diện có thể chuyển nhượng để sắp đặt từng hàng các đối tượng bạn muốn chuyển.

Vì vậy, khi quyết định sử dụng một đoạn, tôi sẽ tự hỏi mình những câu hỏi sau đây:

  • là vòng đời của các mảnh khác nhau từ vòng đời của hoạt động?

Nếu vòng đời là khác nhau, bạn sẽ xử lý tốt hơn vòng đời bằng cách sử dụng một đoạn. Ví dụ, nếu bạn muốn phá hủy mảnh vỡ, nhưng không muốn hoạt động. Đó là trường hợp, khi bạn có một số pager adapter.

  • Mảnh có được sử dụng trong một số hoạt động không?

Sự kiện nhập của người dùng sẽ được sử dụng lại nếu bạn sử dụng một đoạn.

  • Lượng thông tin liên lạc giữa đoạn và hoạt động có nhỏ không?

Nếu bạn cần truyền các đối tượng lớn vào đoạn, bạn sẽ cần phải xử lý mã để tuần tự hóa chúng. Ngoài ra, nếu bạn cần giao tiếp giữa phân đoạn và hoạt động, có thể bạn sẽ cần triển khai các giao diện. Điều này, trong hầu hết trường hợp, thêm phức tạp cho codebase của bạn. Nó không phải là một nhà sản xuất khác biệt, nhưng là một tiêu chí để đưa vào tài khoản.

+0

Nó không chỉ là một vấn đề lập trình. Tôi chỉ đơn giản nghĩ rằng làm một ứng dụng không chỉ viết mã nguồn mà còn đối phó với một số vấn đề giao diện người dùng cho máy tính bảng khác với các vấn đề đối với thiết bị cầm tay, và thành thật mà nói tôi thực sự không thích cách phân mảnh khoảng cách giữa các kích thước màn hình. Làm một ứng dụng nó thực sự không phải là để điền vào các khoảng trống với một số mảnh thừa. Ngay cả từ một điểm lập trình của Xem nếu các bộ phận của tôi có khó khăn để giao tiếp với nhau mà tôi thích để tạo ra một lớp cổng với công cụ phổ biến thay vì đấu tranh với ống yếu. –

+0

về câu này "Vòng đời của đoạn có khác với vòng đời của hoạt động không?". Tôi đã có nhiều trường hợp rằng phần xem có thể là một nhóm xem riêng biệt có cùng vòng đời. nhưng tôi đã sử dụng phân đoạn vì tôi muốn sử dụng nó nhiều nơi và đồng thời tôi cần phải biết về vòng đời và làm một số logic phụ thuộc vào điều đó. trong khi nếu tôi sử dụng viewgroup i cần thiết để thông báo cho nhóm xem về vòng đời của hoạt động gọi một số phương thức onResume tùy chỉnh theo cách thủ công. –

8

Các chuyên gia sẽ cho bạn biết: "Khi tôi thấy giao diện người dùng, tôi sẽ biết có sử dụng số Activity hoặc Fragment" hay không. Ban đầu điều này sẽ không có ý nghĩa gì, nhưng trong thời gian, bạn sẽ thực sự có thể biết được bạn có cần Fragment hay không.

Có một phương pháp hay mà tôi thấy rất hữu ích cho tôi. Nó xảy ra với tôi trong khi tôi đang cố giải thích điều gì đó cho con gái tôi.

Cụ thể, hãy tưởng tượng một hộp đại diện cho màn hình. Bạn có thể tải một màn hình khác trong hộp này không? Nếu bạn sử dụng một hộp mới, bạn sẽ phải sao chép nhiều mục từ hộp thứ nhất?Nếu câu trả lời là Có, thì bạn nên sử dụng Phân đoạn, vì thư mục gốc Activity có thể giữ tất cả các phần tử trùng lặp để giúp bạn tiết kiệm thời gian khi tạo chúng và bạn chỉ cần thay thế các phần của hộp.

Nhưng đừng quên rằng bạn luôn cần hộp chứa (Activity) hoặc các bộ phận của bạn sẽ bị phân tán. Vì vậy, một hộp với các bộ phận bên trong.

Cẩn thận không sử dụng sai hộp. Các chuyên gia Android UX khuyên bạn (bạn có thể tìm thấy chúng trên YouTube) khi chúng tôi tải một cách khác một cách rõ ràng Activity, thay vì sử dụng Phân đoạn (như khi chúng tôi xử lý Ngăn điều hướng có danh mục). Khi bạn cảm thấy thoải mái với Fragments, bạn có thể xem tất cả video của họ. Thậm chí nhiều hơn họ là vật liệu bắt buộc.

Bây giờ bạn có thể xem giao diện người dùng của mình và tìm hiểu xem bạn có cần Activity hoặc Fragment không? Bạn có quan điểm mới không? Tôi nghĩ bạn đã làm. :)

+1

Nó trùng lặp với chủ đề [this] (http://stackoverflow.com/a/25993052/2057291). Cùng tác giả, cùng ngày, chỉ vài phút khác biệt. – tommus

4

Trước đây, mỗi màn hình trong ứng dụng Android được triển khai dưới dạng Hoạt động riêng biệt. Điều này tạo ra một thách thức khi truyền thông tin giữa các màn hình vì cơ chế Intent của Android không cho phép chuyển một loại tham chiếu (tức là đối tượng) trực tiếp giữa các Hoạt động. Thay vào đó, đối tượng phải được tuần tự hóa hoặc tham chiếu có thể truy cập trên toàn cầu có sẵn.

Bằng cách đặt từng màn hình thành một Phân đoạn riêng biệt, dữ liệu này sẽ không thể tránh được. Các mảnh vỡ luôn tồn tại trong ngữ cảnh của một Hoạt động cụ thể và luôn có thể truy cập Hoạt động đó. Bằng cách lưu trữ thông tin quan tâm trong Activity, Fragment cho mỗi màn hình có thể chỉ cần truy cập tham chiếu đối tượng thông qua Activity.

https://softwareengineering.stackexchange.com/questions/244771/why-use-android-fragments

0

Fragment hỗ trợ chính năng động hơn & Màn hình giao diện người dùng lớn như màn hình Tablet.Because Tablet là lớn hơn nhiều so với thiết bị cầm tay thông thường. Có nhiều phòng hơn để kết hợp & Thành phần giao diện người dùng thay đổi.

Phân đoạn cho phép thiết kế như vậy mà không cần thay đổi phức tạp như vậy trong cấu trúc phân cấp Xem.

Bằng cách bố trí hoạt động phân chia trong đoạn, chúng ta trở nên có khả năng thay đổi sự xuất hiện của hoạt động trong thời gian chạy

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