Tại sao lại phân mảnh và khi nào sử dụng phân mảnh thay vì các hoạt động?

519
android developer 2012-05-07 21:23.

Trong Android API 11+, Google đã phát hành một lớp mới được gọi là Fragment.

Trong video, Google gợi ý rằng bất cứ khi nào có thể ( link1 , link2 ), chúng ta nên sử dụng các phân đoạn thay vì các hoạt động, nhưng họ không giải thích chính xác lý do tại sao.

Mục đích của các phân đoạn là gì và một số cách sử dụng chúng có thể xảy ra (ngoài một số ví dụ về giao diện người dùng có thể dễ dàng đạt được bằng các khung nhìn / bố cục đơn giản)?

Câu hỏi của tôi là về các mảnh:

  1. Mục đích của việc sử dụng một mảnh là gì?
  2. Ưu điểm và nhược điểm của việc sử dụng phân mảnh so với sử dụng các hoạt động / chế độ xem / bố cục là gì?

Câu hỏi thưởng:

  1. Bạn có thể đưa ra một số cách sử dụng thực sự thú vị cho các mảnh vỡ không? Những điều mà Google không đề cập đến trong video của họ?
  2. Cách tốt nhất để giao tiếp giữa các phân đoạn và các hoạt động chứa chúng là gì?
  3. Những điều quan trọng nhất cần nhớ khi bạn sử dụng mảnh vỡ là gì? Bất kỳ lời khuyên và cảnh báo từ kinh nghiệm của bạn?

11 answers

296
Glenn Bech 2012-05-10 02:11.

# 1 & # 2 mục đích của việc sử dụng phân mảnh là gì & ưu điểm và nhược điểm của việc sử dụng phân mảnh so với sử dụng các hoạt động / chế độ xem / bố cục là gì?

Phân mảnh là giải pháp của Android để tạo giao diện người dùng có thể tái sử dụng. Bạn có thể đạt được một số điều tương tự bằng cách sử dụng các hoạt động và bố cục (ví dụ: bằng cách sử dụng bao gồm). Tuy nhiên; các phân đoạn được kết nối với API Android, từ HoneyComb trở lên. Hãy để tôi nói rõ hơn;

  • Các ActionBar. Nếu bạn muốn các tab ở trên đó để điều hướng ứng dụng của mình, bạn sẽ nhanh chóng thấy ActionBar.TabListenergiao diện đó cung cấp cho bạn FragmentTransactionlàm đối số đầu vào cho onTabSelectedphương thức. Bạn có thể bỏ qua điều này và làm điều gì đó khác và thông minh, nhưng bạn đang làm việc với API chứ không phải với nó.

  • Các FragmentManagertay cầm «trở lại» cho bạn một cách rất thông minh. Quay lại không có nghĩa là quay lại hoạt động cuối cùng, giống như đối với các hoạt động thông thường. Nó có nghĩa là trở lại trạng thái phân mảnh trước đó.

  • Bạn có thể sử dụng tính năng thú vị ViewPagervới a FragmentPagerAdapterđể tạo giao diện vuốt. Các FragmentPagerAdaptercode đang nhiều bụi hơn một bộ chuyển đổi thường xuyên, và nó điều khiển sự khởi tạo của các cá nhân.

  • Cuộc sống của bạn sẽ dễ dàng hơn rất nhiều nếu bạn sử dụng Fragment khi bạn cố gắng tạo ứng dụng cho cả điện thoại và máy tính bảng. Vì các phân đoạn được gắn chặt với các API Honeycomb +, bạn sẽ muốn sử dụng chúng trên điện thoại cũng như để sử dụng lại mã. Đó là nơi mà thư viện tương thích có ích.

  • Bạn thậm chí có thể và nên sử dụng các phân mảnh cho các ứng dụng chỉ dành cho điện thoại. Nếu bạn có tính di động trong tâm trí. Tôi sử dụng ActionBarSherlockvà các thư viện tương thích để tạo các ứng dụng "ICS trông", trông giống nhau từ phiên bản 1.6. Bạn nhận được các tính năng mới nhất như ActionBar, với các tab, phần bổ sung, thanh tác vụ phân chia, máy xem ảnh, v.v.

Phần thưởng 2

Cách tốt nhất để giao tiếp giữa các mảnh là ý định. Khi bạn nhấn một cái gì đó trong Fragment, bạn thường sẽ gọi StartActivity()với dữ liệu trên đó. Mục đích được chuyển cho tất cả các phân đoạn của hoạt động mà bạn khởi chạy.

74
Nikolay Elenkov 2012-05-07 21:37.

Không chắc bạn đang đề cập đến (các) video nào, nhưng tôi nghi ngờ họ đang nói rằng bạn nên sử dụng các phân đoạn thay vì các hoạt động, bởi vì chúng không thể hoán đổi trực tiếp cho nhau. Thực sự có một mục nhập khá chi tiết trong Hướng dẫn dành cho nhà phát triển, hãy xem xét đọc nó để biết chi tiết.

Nói tóm lại, các mảnh vỡ sống bên trong các hoạt động, và mỗi hoạt động có thể chứa nhiều mảnh vỡ. Giống như các hoạt động, chúng có một vòng đời cụ thể, không giống như các hoạt động, chúng không phải là các thành phần ứng dụng cấp cao nhất. Ưu điểm của phân mảnh bao gồm khả năng tái sử dụng mã và tính mô-đun (ví dụ: sử dụng cùng một chế độ xem danh sách trong nhiều hoạt động), bao gồm khả năng xây dựng giao diện nhiều ngăn (chủ yếu hữu ích trên máy tính bảng). Nhược điểm chính là (một số) phức tạp thêm. Nhìn chung, bạn có thể đạt được điều tương tự với các chế độ xem (tùy chỉnh) theo cách không chuẩn và kém mạnh mẽ hơn.

51
mani 2014-05-24 03:26.

Fragment là một phần của giao diện người dùng hoặc hành vi của ứng dụng có thể được đặt trong Activity cho phép thiết kế hoạt động theo mô-đun hơn. Sẽ không sai nếu chúng ta nói một mảnh vỡ là một loại hoạt động phụ.

Sau đây là những điểm quan trọng về một mảnh:

  1. Một phân mảnh có bố cục riêng và hành vi riêng của nó với các lệnh gọi lại vòng đời của chính nó.

  2. Bạn có thể thêm hoặc xóa các phân đoạn trong một hoạt động khi hoạt động đang chạy.

  3. Bạn có thể kết hợp nhiều phân đoạn trong một hoạt động để tạo giao diện người dùng nhiều ngăn.

  4. Một phân mảnh có thể được sử dụng trong nhiều hoạt động.

  5. Vòng đời của mảnh có liên quan chặt chẽ đến vòng đời của hoạt động vật chủ của nó.

  6. Khi hoạt động bị tạm dừng, tất cả các phân đoạn có sẵn trong tài khoản cũng sẽ bị dừng lại.

  7. Một phân đoạn có thể triển khai một hành vi không có thành phần giao diện người dùng.

  8. Các đoạn đã được thêm vào API Android trong Android 3 (Honeycomb) với phiên bản API 11.

Để biết thêm chi tiết, vui lòng truy cập trang web chính thức, Fragment .

22
Kaveesh Kanwal 2015-09-04 18:23.

Đây là thông tin quan trọng mà tôi tìm thấy trên các mảnh:

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

Bằng cách làm cho mỗi màn hình trở thành một Fragment riêng biệt, việc truyền dữ liệu này hoàn toàn có thể tránh được. Các phân đoạn luôn tồn tại trong ngữ cảnh của một Hoạt động nhất định và luôn có thể truy cập vào Hoạt động đó. Bằng cách lưu trữ thông tin quan tâm trong Hoạt động, 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 Hoạt động.

Nguồn: https://www.pluralsight.com/blog/software-development/android-fragments

16
Chandrima Bhattacharjee 2018-06-29 13:14.

Các hoạt động là thành phần toàn màn hình trong ứng dụng với thanh công cụ, mọi thứ khác tốt hơn là Phân đoạn. Một hoạt động chính trên toàn màn hình với thanh công cụ có thể có nhiều ngăn, trang có thể cuộn, hộp thoại, v.v. (tất cả các phân đoạn), tất cả đều có thể được truy cập từ phụ huynh và giao tiếp thông qua phụ huynh.

Thí dụ:

Hoạt động A, Hoạt động B, Hoạt động C:

  • Tất cả các hoạt động cần có cùng một đoạn mã được lặp lại, ví dụ như để hiển thị một thanh công cụ cơ bản hoặc kế thừa từ một hoạt động mẹ (trở nên cồng kềnh để quản lý).
  • Để chuyển từ hoạt động này sang hoạt động khác, tất cả chúng cần phải ở trong bộ nhớ (chi phí) hoặc một hoạt động cần bị hủy để hoạt động kia mở.
  • Giao tiếp giữa các hoạt động có thể được thực hiện thông qua Intents.

vs

Hoạt động A, Phân đoạn 1, Phân đoạn 2, Phân đoạn 3:

  • Không lặp lại mã, tất cả các màn hình đều có thanh công cụ, v.v. từ một hoạt động đó.
  • Một số cách để di chuyển từ một phân đoạn này sang phân đoạn tiếp theo - xem máy nhắn tin, nhiều ngăn, v.v.
  • Hoạt động có hầu hết dữ liệu, vì vậy cần giao tiếp giữa các phân đoạn tối thiểu. Nếu vẫn cần thiết, có thể được thực hiện thông qua các giao diện một cách dễ dàng.
  • Các mảnh vỡ không cần phải toàn màn hình, rất nhiều sự linh hoạt trong việc thiết kế chúng.
  • Các phân đoạn không cần phải tăng cường bố cục nếu các lượt xem là không cần thiết.
  • Một số hoạt động có thể sử dụng cùng một phân đoạn.
8
Nithin Baby 2014-12-16 06:59.

Các phân đoạn được sử dụng cụ thể trong một số trường hợp như khi chúng tôi muốn giữ ngăn điều hướng trong tất cả các trang của mình. Bạn có thể phóng to bố cục khung với bất kỳ đoạn nào bạn muốn và vẫn có quyền truy cập vào ngăn điều hướng.

Nếu bạn đã sử dụng một hoạt động, bạn sẽ phải giữ ngăn kéo trong tất cả các hoạt động tạo ra mã thừa. Đây là một cách sử dụng mảnh ghép thú vị.

Tôi là người mới sử dụng Android và vẫn nghĩ rằng một phân mảnh là hữu ích theo cách này.

5
einschnaehkeee 2015-05-17 22:16.

Tôi biết điều này đã được thảo luận đến chết, nhưng tôi muốn bổ sung thêm một số điểm:

  • Frags có thể được sử dụng để điền Menuvà có thể tự xử lý MenuItemcác nhấp chuột. Do đó, cung cấp các tùy chọn điều chế bổ sung cho Hoạt động của bạn. Bạn có thể thực hiện nội dung ContextualActionBar, v.v. mà Activity của bạn không biết về nó và về cơ bản có thể tách nó khỏi những thứ cơ bản mà Activity của bạn xử lý (Điều hướng / Cài đặt / Giới thiệu).

  • Frag mẹ với Frag con có thể cung cấp cho bạn các tùy chọn khác để điều chỉnh các thành phần của bạn. Ví dụ: bạn có thể dễ dàng hoán đổi các Frags xung quanh, đặt các Frags mới vào trong một Máy nhắn tin hoặc loại bỏ chúng, sắp xếp lại chúng. Tất cả mà Activity của bạn không biết gì về nó, chỉ tập trung vào những thứ cấp cao hơn.

1
Prithiv Dharmaraj 2017-09-05 01:50.

1.Các mục tiêu của việc sử dụng một phân mảnh?

  • Trả lời:
    1. Xử lý sự khác biệt về hệ số hình thức của thiết bị.
    2. Truyền thông tin giữa các màn hình ứng dụng.
    3. Tổ chức giao diện người dùng.
    4. Ẩn dụ giao diện người dùng nâng cao.
0
maniix 2016-05-16 02:46.

Các mảnh nằm trong Hoạt động và có:

  • vòng đời của chính nó
  • bố cục riêng của nó
  • các mảnh con của chính nó và v.v.

Hãy coi Fragment như một hoạt động phụ của hoạt động chính mà nó thuộc về, nó không thể tồn tại riêng và nó có thể được gọi / sử dụng lại nhiều lần. Hi vọng điêu nay co ich :)

0
superkytoz 2015-12-15 01:15.

Một mảnh sống bên trong một hoạt động, trong khi một hoạt động sống tự nó.

0
Meenohara 2020-07-07 23:47.

Thêm vào các câu trả lời ở trên, tôi sẽ kể bằng cách sử dụng ví dụ về một ứng dụng tôi đã phát hành trên playstore.

Đây là ứng dụng đầu tiên tôi phát triển khi học android ở đó, trước đó tôi chỉ làm việc với các hoạt động Có nhiều trang hoạt động mà tôi nghĩ về 12. Hầu hết trong số này có nội dung có thể được sử dụng lại trong các trang khác nhưng tôi đã kết thúc với một trang hoạt động riêng cho hầu hết mỗi lần nhấp vào ứng dụng. Khi tôi học được các phân đoạn, tôi nhận ra rằng tất cả các phân đoạn có thể tái sử dụng có thể được triển khai như thế nào và tách các phân đoạn ra và chỉ được sử dụng với rất ít hoạt động. Người dùng của tôi có thể không thấy bất kỳ sự khác biệt nào, nhưng điều tương tự cũng có thể được thực hiện với mã ít hơn bên cạnh các đoạn mã có trọng lượng nhẹ, ngoài khả năng tái sử dụng và tính mô đun mà chúng cung cấp.

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Đây là Tổng thống Trump đe dọa 'trợ cấp' xe điện của GM vì đóng cửa nhà máy

Đây là Tổng thống Trump đe dọa 'trợ cấp' xe điện của GM vì đóng cửa nhà máy

Trump và Giám đốc điều hành GM Mary Barra vào năm 2017. Kể từ khi tin tức nổ ra ngày hôm qua rằng General Motors đang cắt giảm việc làm ở Bắc Mỹ để chuẩn bị cho tương lai điện / xe tự hành / khủng khiếp có thể xảy ra của chúng tôi, gần như tất cả mọi người đã tự hỏi: Tổng thống Trump, người đã vận động tranh cử trên một nền tảng sẽ như thế nào của việc mang lại và duy trì việc làm ô tô của Mỹ, phải nói gì về điều này? Bây giờ chúng ta biết.

Bản vá lỗi tiếp theo của Fallout 76 sẽ mang lại một số bản sửa lỗi cần thiết

Bản vá lỗi tiếp theo của Fallout 76 sẽ mang lại một số bản sửa lỗi cần thiết

Bethesda cho biết ngày hôm nay trên Reddit, Fallout 76 sẽ có một bản vá lớn khác vào ngày 4 tháng 12, sẽ bắt đầu cố gắng khắc phục một số vấn đề lớn hơn của trò chơi. Ngoài ra, công ty cho biết họ có kế hoạch giao tiếp nhiều hơn trong tương lai về những gì nhóm Fallout 76 đang làm việc và khi nào các bản cập nhật mới cho trò chơi sẽ ra mắt.

Mạng lưới bệnh viện Công giáo sẽ không cho phép nhân viên phá thai tại phòng khám ngoài giờ làm việc

Mạng lưới bệnh viện Công giáo sẽ không cho phép nhân viên phá thai tại phòng khám ngoài giờ làm việc

Bạn có biết rằng một trong sáu bệnh nhân ở bệnh viện ở Hoa Kỳ được điều trị tại một cơ sở Công giáo? Và bạn có biết rằng quyền sở hữu của Công giáo hạn chế sâu sắc việc thiết lập các thủ tục y tế có thể được thực hiện trong các bệnh viện này, rõ ràng nhất là khi nói đến chăm sóc sức khỏe sinh sản? Bây giờ NPR báo cáo rằng sự gia tăng của các bệnh viện thuộc Công giáo đang gây khó khăn hơn cho các bác sĩ — những người bị cấm bởi các quy định do Hoa Kỳ viết.

Khói từ đám cháy rừng ở California đã đến tận thành phố New York

Khói từ đám cháy rừng ở California đã đến tận thành phố New York

Đường chân trời San Francisco bị che khuất bởi khói và khói mù do cháy rừng phía sau Đảo Alcatraz, Thứ Tư, ngày 14 tháng 11 năm 2018, ở San Francisco.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Vụ kiện, nêu tên một số học khu, lập luận rằng dự luật "Không nói đồng tính" được ban hành gần đây của Florida "có hiệu quả im lặng và xóa bỏ học sinh và gia đình LGBTQ +"

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Tôi ghét từ "tàu đắm". Mọi người cảm thấy thoải mái trong la bàn đạo đức của riêng mình, và khi làm như vậy, họ thấy mình vượt qua sự phán xét.

Language