Fragment Là Gì

Với câu hỏi càng ngày càng đa dạng mẫu mã sản phẩm công nghệ Android ra đời thì fan ta đã suy nghĩ ra các cách khác biệt nhằm sắp xếp giao diện áp dụng sao để cho tương xứng để tận dụng diện tích màn hình. Một trong những chính là Fragment. Đây là 1 trong yếu tắc khá đặc biệt quan trọng, được sử dụng rất nhiều trong số những áp dụng chuyên nghiệp hóa, nó hơi kiểu như activity. Và vào nội dung bài viết này chúng ta thuộc mày mò về nó nhé !

Sự thành lập với tầm quan trọng đặc biệt của Fragment

Mỗi một đối tượng người tiêu dùng khi Thành lập đều có ngulặng nhân cùng mục tiêu của nó.Vậy thì mục tiêu Ra đời của Fragment là gì ?Trsinh sống lại năm 2010 Steve sầu Jobs cùng Apple đang mang lại giới thiệu dòng sản phẩm máy tính bảng ipad, đồ vật cài một màn hình cảm ứng to (9.7 inch). không chỉ có vậy, Apple và các Apple developers đang tối ưu hóa bối cảnh người tiêu dùng cho máy tính bảng ipad ,đồ họa nhiều cột trên một màn hình hiển thị Ra đời. Đây là một thành phầm mang tính cách mạng của Apple và ngay chớp nhoáng nó đang tiếp thu cho Apple phần lớn doanh số bán hàng khổng lồ.

Bạn đang xem: Fragment là gì

*

Các công ty cấp dưỡng điện thoại cảm ứng thông minh thời điểm đó như Acer xuất xắc Hãng Asus lập tức giới thiệu các máy tính xách tay bảng chạy Android 2.3 cơ mà không cho Google kịp gồm cơ hội viết lại Android đến tương xứng cùng với tận hưởng màn hình hiển thị Khủng. Màn hình có đầy các khoảng Trắng siêu có hại. Vì trên máy vi tính bảng tất cả màn hình hiển thị Khủng cần người dùng tất cả xu hướng cần sử dụng cả hai tay để thao tác, dẫn đến đồ họa một cột truyền thống lâu đời không đông đảo gây lãng phí không gian Nhiều hơn gây khó khăn, phiền toái cho người cần sử dụng lúc thao tác.Các thiết bị máy vi tính bảng chạy Android 2.3 lúc ấy không khác gì một chiếc Smartphone với cùng một hình Khủng, thua cuộc trước tiên bên trên thị trường máy tính bảng chạy Android đối với iPad tablet. Nhưng mặc dù sao cũng ko mong muốn những vào đầy đủ thiết bị "học tập đòi" bắt buộc ko như thế nào

*
.

Để đuổi kịp cuộc đua với Apple tương tự như sức ép tự phía những OEM, Google sẽ đề xuất thi công một phiên phiên bản Android đặc thù mang lại tablet(máy vi tính bảng) – Android 3.0 HoneyComb – cùng với hàng loạt các thư viện bắt đầu, nhưng mà đa số, là Fragment. Khi đem vận dụng vào thực tiễn, thì nếu so lại với bối cảnh iPad tablet bên trên, thì mỗi Fragment vẫn là một trong cột trong một Activity Khủng.

Và nguồn gốc của sự việc Thành lập của Fragment là như vậy. Tuy nhiên, không chỉ có vậy, Fragment sẽ cách tân và phát triển hết sức nkhô nóng cùng quá cả ý tưởng thuở đầu chỉ nhằm mục đích để về tối ưu hình ảnh mang đến Activity.Có lẽ sẽ nắm rõ ưu điểm của Fragment, ngay trong khi Android 4.0 Ice Cream Sandwich Ra đời, thì thỏng viện support cho Fragment cũng xuất hiện thêm cùng hỗ trợ ngược lại cho tới tận API4, tức Android 1.6, nhằm các developers trước là không đề xuất viết lại ứng dụng cho Android 2.3 về trước với 3.0 về sau, mặt khác để chúng ta hoàn toàn có thể tận dụng sức khỏe của Fragment trên những phiên bản Android cũ hơn.

quý khách hàng hoàn toàn có thể thấy sẽ sở hữu được áp dụng trọn vẹn không sử dụng cho Fragment, giả dụ UI của chính nó đầy đủ đơn giản dễ dàng. Nhưng trong nhiều ngôi trường thích hợp, nếu như khách hàng biết xúc tiến một Activity thành những Fragment bé, hoàn toàn có thể để giúp đỡ tiết kiệm ngân sách và chi phí không hề ít thời hạn kiến thiết, xuất bản cùng sửa lỗi nữa nhé.Vai trò cơ bản của Fragment sẽ là góp sút cài đặt mang lại thiết kế viên Khi cần thiết kế đồ họa linh động bên trên những screen mập nhỏ khác nhau.

Fragment Và Sự Tương Thích Ngược

Như chúng ta cũng có thể thấy rằng, Fragment thành lập cũng bởi một nguyên nhân chính, sẽ là hỗ trợ đồ họa trên tablet. Nên Fragment khôn cùng gắn sát với việc Thành lập và hoạt động của tablet. Và hệ điều hành quản lý đánh dấu mang đến Việc cung ứng thỏa thuận tablet đó là hệ quản lý điều hành Android 3.0 (APL cấp độ 11).

Vậy thì, giả dụ project của bạn gồm knhị báo minSdkVersion từ bỏ 11 trsinh sống lên, thì không có gì để nói. Nhưng nếu cực hiếm tùy chỉnh này nhỏ dại rộng 11 thì hệ thống vẫn hỗ trợ tương hợp ngược cho cùng với những áp dụng như vậy này, nhưng mà sẽ có được một ít khác hoàn toàn so với Việc quyết định thực hiện lớp Fragment.

Khi gây ra Fragment, các bạn sẽ luôn thấy bao gồm nhị sàng lọc Fragment sống hai package khác biệt nlỗi nhì dòng thứ nhất sinh sống hình bên dưới. Một Fragment trực thuộc về android.ứng dụng với một Fragment thuộc về game android.tư vấn.v4.app. Tất nhiên, các bạn nên làm thực hiện 1 trong nhì thôi, giải pháp lựa chọn Fragment nào nhằm áp dụng thì bản thân đã nói rõ hơn sinh hoạt dưới đây.

*
Sau đấy là phương pháp chọn lựa Fragment nào giành riêng cho project của bạn:

Nếu minSdkVersion của ứng dụng tự 11 trlàm việc lên. quý khách cứ đọng dễ chịu và thoải mái thực hiện Fragment vào gói game android.phầm mềm như cái thứ nhất sống hình trên. Kèm theo đó chúng ta yêu cầu áp dụng cách thức getFragmentManager() lúc yêu cầu hiển thị rượu cồn Fragment lên Activity .

Nếu minSdkVersion của ứng dụng nhỏ tuổi hơn 11. quý khách hãy sử dụng đến Fragment làm việc gói tương hợp ngược app android.support.v4.tiện ích ở mẫu sản phẩm nhị của hình. Nhưng khi này chúng ta buộc phải sử dụng cách thức getSupportFragmentManager() mang lại mục đích hiển thị hễ Fragment. Và lại có ràng buộc nữa rằng Activity chứa đựng Fragment trong lúc này chưa phải Activity thường xuyên cơ mà đề nghị là FragmentActivity. Tuy nhiên nếu khách hàng thấy Activity chúng ta sử dụng vẫn kế thừa trường đoản cú AppCompatActivity rồi thì cũng yên trung khu nhé, do AppCompatActivity cung cấp Fragment đến những hệ quản lý Android cũ rộng.

Định nghĩa Fragment

Chúng ta đang biết về lịch sử hào hùng Ra đời của fragment rồi, vậy thì fragment đích thực là vật gì ?

A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to lớn build a multi-pane UI và reuse a fragment in multiple activities. You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own đầu vào events, & which you can add or remove sầu while the activity is running (sort of like a “sub activity” that you can reuse in different activities).

*

Bạn hoàn toàn có thể tưởng tượng Fragment Chịu đựng trách rưới nhiệm quản lý một không gian screen, đôi lúc không gian này cũng chính là toàn màn hình. Và cái không gian screen đó của Fragment cần phía bên trong một Activity như thế nào đó. Một Activity hoàn toàn có thể có không ít Fragment, có Khi những Fragment của Activity đó cùng nhau hiển thị lên một màn hình, cũng đều có lúc bọn chúng luân phiên hiển thị ví như nlỗi mỗi chúng hầu như chỉ chiếm cả không khí màn hình. Và một ý nữa, một Fragment nào đó cũng hoàn toàn có thể được knhị báo với thực hiện bởi những Activity khác nhau.

Một số điểm lưu ý của Fragment nhưng tôi đã tổng kết được:

Fragment là 1 yếu tắc app android tự do, được áp dụng vày một activity, giống hệt như một sub-activity.Fragment có vòng đời và đồ họa riêng rẽ.Các Fragment thường sẽ có một file java kèm theo với tệp tin bối cảnh xml. Các fragment không tồn tại file đồ họa xml thường được Điện thoại tư vấn là headless fragments.Vòng đời của fragment bị tác động trực tiếp bởi vòng đời của activity công ty . lấy một ví dụ, khi vận động bị tạm dừng, toàn bộ phân đoạn trong nó cũng vậy, với lúc chuyển động bị diệt, toàn bộ phân đoạn cũng như vậy.Một Fragment rất có thể được thực hiện trong vô số Activitiy.Fragment được cung ứng API 11 trlàm việc lên.Fragment sử dụng phương thức getActivity() để đưa ra Activity chaFragment được tư tưởng vào file xml của activity (static definition) hoặc hoàn toàn có thể sửa đổi fragment lúc đang làm việc (dynamic definition)

Như sẽ nhắc tới ở bên trên Fragment khá tương tự Activity, nó cũng có các trạng thái với vòng đời riêng rẽ của bản thân mình. Chúng ta thuộc tìm hiểu ở vị trí dưới đây nhé !

Vòng đời của một Fragment

Giống như activity, Fragment có thể mãi mãi ở những trạng thái:

Resume(Hoạt động)Fragment hiển thị vào activity đang làm việc.

Pause(Tạm dừng)Một hoạt activity sống trong foreground cùng gồm tiêu điểm, nhưng lại activity mà fragment này phía trong vẫn hiển thị (activity tở foreground mờ một phần hoặc không bịt bao phủ tổng thể màn hình).

Stop(Dừng lại)Cũng kiểu như cùng với Activity, Fragment bị giới hạn lúc bị nhân tố nào kia bịt tắt thở trọn vẹn. Hay bị gỡ thoát ra khỏi Activity.Dừng chưa hẳn là chấm hết mang lại đời sống của Fragment. Cụ thể là các tâm lý của chính nó vẫn tồn tại được lưu trữ, nhằm phòng ngôi trường hợp Fragment này được trở về hiển thị cho người dùng.

Dead(Chết)Nếu Fragment bị gỡ ra khỏi Activity, tuy thế ko được gửi vào Baông xã Stack trước kia, thì nó đang ngừng vòng đời. Hoặc Activity cất Fragment này bị gỡ khỏi Baông chồng Staông xã, Fragment cũng sẽ bị tiêu diệt theo.

Sơ thứ vòng đời của Fragment

*

onAttach()

Callback này được hotline tương đối mau chóng, ngay trong khi Activity chứa nó được kích hoạt. Hoặc ngay trong khi được tích hợp Activity.Callbaông chồng này được Hotline một đợt độc nhất vô nhị trong khoảng đời Fragment.

Xem thêm: Chăm Sóc Da Mặt Đúng Các Bước Chăm Sóc Da Hằng Ngày Không Nên Bỏ Qua

onCreate()

Callback này được hotline lúc Fragment ban đầu khởi sản xuất từ các tài liệu nguồn vào.Khác với onCreate() của Activity, rằng chúng ta cũng có thể chế tạo ra đồ họa mang đến màn hình hiển thị sinh sống callbachồng này, thì cùng với Fragment họ còn cần hóng qua callbaông xã tiếp theo bắt đầu có thể tạo ra giao diện được.Callbaông xã này cũng rất được gọi một lượt trong khoảng đời Fragment. quý khách cần khởi chế tạo các yếu tắc cơ bản của Fragment mà lại bạn có nhu cầu gia hạn khi Fragment bị ngừng hoặc tạm ngưng, tiếp đến được phục hồi lại.

onCreateView()

Khi Fragment ban đầu vẽ UI lên màn hình hiển thị, callbachồng này được hotline. Nên họ sẽ tận dụng tối đa callbaông xã này cho các tùy chỉnh thiết lập về bối cảnh.Quý Khách thấy rằng, theo nlỗi sơ đồ gia dụng bên trên, thì callbaông chồng này sẽ được Điện thoại tư vấn lại lúc mà Fragment được gỡ thoát khỏi Activity nhưng được đưa vào Back Stack, với được hotline lại hiển thị tiếp nối.

onActivityCreated()

Callback này được hotline tức thì sau thời điểm onCreateView() được gọi. Nó đánh tiếng tinh thần Activity cất nó được khởi chế tác trọn vẹn. Tuy ít được áp dụng rộng các callback không giống, tuy nhiên bạn cũng có thể tận dụng nó nhằm biến hóa đồ họa hay những hệ trọng với Activity cất Fragment này thoải mái và dễ chịu được rồi.

onStart()

khi Fragment bước đầu được thấy được vày người tiêu dùng với chuẩn bị thừa nhận tương tác.

onResume()

Người sử dụng trọn vẹn nhận thấy và liên quan được cùng với Fragment.

onPause()

Callbaông xã này như một tín hiệu cho thấy rằng người dùng vẫn ra khỏi Fragment bây giờ.

onStop()

Fragment bằng lòng không hề được thấy được nữa.

onDestroyView()

Chắc chắn là đối tượng người dùng View sẽ ảnh hưởng hủy sinh sống callbaông chồng này. Và cho nên vì thế các khởi chế tạo view của chúng ta ở onCreateView() đã mau lẹ không còn nữa.Nếu như Fragment được chuyển vào Bachồng Staông chồng, thì Lúc được lấy ra lại tiếp nối, callbachồng onCreateView() sẽ được Call lại.

onDestroy()

Callbaông xã này chỉ nlỗi một lời “nhắc nhở” về vận mệnh của Fragment mà thôi.

onDetach()

Callbachồng này Gọi đến thông tin Fragment sẽ được gỡ ngoài Activity vẫn chứa nó. Kết thúc vòng đời của Fragment.

Lý thuyết có vẻ như khá những rồi, bây giờ chúng ta thuộc lấn sân vào thực hành sinh sản một Fragment nhé.

Tạo một Fragment

Một điều hết sức đặc biệt quan trọng là Fragment không lúc nào tách khỏi Activity. Muốn sử dụng Fragment thì chúng ta phải đặt hoặc hotline từ bỏ Activity.

Có nhị phương pháp để đặt/Hotline Fragment trường đoản cú Activity.

Static Fragment

quý khách đặt “cứng” vào file contentView XML của activity với thẻ .

lấy một ví dụ ta gồm 2 static fragment là MyFragment1.java(fragment1.xml) với MyFragment2.java(fragment2.xml).Trong file activity_main.xml knhị báo tĩnh

Thuộc tính class chỉ cho băng thông chứa tệp tin java tương xứng.

Chú ý: Bắt buộc phải có ở trong tính android:id. Nếu không sẽ gây lỗi.

Hai class MyFragment1.java và MyFragment2.java nên extends FragmentVà nên ghi đnai lưng thủ tục onCreateView:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment1, container, false); return view;Định nghĩa nhị file fragment1.xml cùng fragment2.xml nhỏng sau:

fragment1.xml

fragment2.xml

Kết quả:

*

Dynamics Fragment

Nếu nhỏng cùng với biện pháp hiển thị tĩnh bên trên tê, bạn cần hướng đẫn thẻ fragment như thế nào đang tiềm ẩn Fragment như thế nào một giải pháp cố định. Thì với cách hiển thị đụng này, bạn chỉ việc khai báo một vùng không khí nào này sẽ tiềm ẩn Fragment.

Ví dụ:Sửa lại tệp tin maiv_activity nghỉ ngơi ví dụ trên nlỗi sau:

Và vào tệp tin MainActivity , sửa lại cũng sửa lại thành:

public class MainActivity extends AppCompatActivity { Button btn; FragmentManager fm;