شرح دورة حياة القطع في الاندرويد Fragment Lifecycle

 في Android ، يعد 

فيما يلي قائمة بالطرق او الدوال التي يمكنك استخدامها  مع القطع  فئة Fragment -

1. onAttach (): يرتبط مثيل الجزء بمثيل نشاط ، ويُطلق على هذه الطريقة اسم أولاً ، حتى قبل طريقة onCreate (). تتيح لنا هذه الطريقة معرفة أن القطعة Fragment الخاص بنا قد تم إرفاقه بنشاط ما.

يوجد أدناه مثال كود طريقة onAttach ().

	 
	 @Override
	 public void onAttach(Activity activity) {
	 super.onAttach(activity);
	 // add your code here which executes when fragment instance is associated
	 }
   
   

2. onCreate (): سيتم استدعاء هذا عند إنشاء القطعة Fragment . هذا يعني أنه عند تهيئة مثيل جزء جديد ، والذي يحدث دائمًا بعد إرفاقه بالمضيف.

يوجد أدناه مثال كود طريقة onCreate ().

	 
	 @Override
	 public void onCreate(Bundle savedInstanceState) {
	 super.onCreate(savedInstanceState);
	 // add your code here which executes when fragment's instance initializes
	 }
   
   

3. onCreateView (): سيتم استدعاؤه عندما يحين وقت القطعة Fragment  لرسم واجهة المستخدم الخاصة به (واجهة المستخدم) لأول مرة. لرسم واجهة مستخدم للجزء الخاص بنا ، يجب أن نعيد مكون العرض من هذه الطريقة التي تمثل جذر تخطيط الجزء الخاص بنا. يمكننا أيضًا إرجاع قيمة خالية إذا كان الجزء لا يوفر واجهة مستخدم.

فيما يلي كود المثال لطريقة onCreateView ().

	 
	 @Override
	 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

	 View v = inflater.inflate(R.layout.fragment_test, container, false);
	 // add your code here to draw the UI for the first time means in this method we can get the reference of the views which are created         // in our xml file

	 return v;
	 }
   
   

4. onViewCreated (): سيتم استدعاء هذا بعد طريقة onCreateView (). هذه الطريقة مفيدة بشكل خاص عند وراثة تنفيذ طريقة onCreateView () ولكننا نحتاج إلى تكوين طرق العرض الناتجة مثل ListFragment ووقت إعداد محول .

فيما يلي كود المثال لطريقة onViewCreated ().

	 @Override
	 public void onViewCreated(View view, Bundle savedInstanceState) {
	 super.onViewCreated(view, savedInstanceState);
	 // add your code here which executes after the execution of onCreateView() method.

	 }
   
	 
   

5. onActivityCreated (): يُطلق على هذه الطريقة اسم طريقة onCreateView () عند إنشاء نشاط المضيف. تشير هذه الطريقة إلى أن النشاط onCreate () قد اكتمل.

فيما يلي كود مثال لطريقة onActivityCreated ().

	 
	 @Override
	 public void onActivityCreated(Bundle savedInstanceState) {
	 super.onActivityCreated(savedInstanceState);
	 // add your code here which executes when the host activity is created.
	 }
   
   

6. onStart (): تسمى هذه الطريقة بمجرد ظهور الجزء.

فيما يلي رمز مثال لطريقة onStart ().

	 @Override
	 public void onStart() {
	 super.onStart();
	 // add your code here which executes when the Fragment gets visible.
	 }
   
   

7. onResume (): تسمى هذه الطريقة عندما يكون القطعة Fragment  مرئيًا ومستعصيًا على الحل.

فيما يلي رمز المثال لطريقة onResume ().

	 
	 @Override
	 public void onResume() {
	 super.onResume();
	 // add your code here which executes when the Fragment is visible and intractable.
	 }
   
   

8. onPause (): هذه الطريقة هي أول إشارة إلى أن المستخدم يترك القطعة Fragment  الحالي أو القطعة Fragment  الذي لم يعد قابلاً للتفاعل. يحدث ذلك عند معالجة أي جزء من عملية النقل أو إزالة جزء.

فيما يلي كود مثال لطريقة onPause ().

	 @Override
	 public void onPause() {
	 super.onPause();
	 // add your code here which executes when user leaving the current fragment or fragment is no longer intractable.
	 }
   
	 
   

9. onStop (): تسمى هذه الطريقة بعد طريقة onPause (). سيتم إيقاف المقطع عن طريق استدعاء onStop (). تستدعي هذه الطريقة عندما لا يكون القطعة Fragment  مرئيًا. يحدث إما بعد أن يكون القطعة Fragment  على وشك الإزالة أو بعد معالجة انتقال الجزء (استبدال الجزء) أو عند توقف نشاط المضيف.

فيما يلي كود مثال لطريقة onStop ().

	 @Override
	 public void onStop() {
	 super.onStop();
	 // add your code here which executes Fragment going to be stopped.
	 }
   
	 
   

10. onDestroyView (): يتم استدعاء هذه الطريقة عند إزالة العرض والموارد الأخرى ذات الصلة التي تم إنشاؤها في طريقة onCreateView () من التسلسل الهرمي لعرض النشاط وإتلافها.

فيما يلي كود المثال لطريقة onDestroyView ().

	 
	 @Override
	 public void onDestroyView() {
	 super.onDestroyView();
	 // add your code here which executes when the view's and other related resources created in onCreateView() method are removed
	 }
   
   

11. onDestroy (): يُطلق على هذه الطريقة إجراء التنظيف النهائي لحالة Fragment ولكن لا يمكن ضمان استدعاؤها بواسطة نظام Android الأساسي. تسمى هذه الطريقة بعد طريقة onDestroyView ().

فيما يلي كود مثال لطريقة onDestroy ().

	 
	 @Override
	 public void onDestroy() {
	 super.onDestroy();
	 // add your code here which executes when the final clean up for the Fragment's state is needed.
	 }
   
   

12. onDetach (): تسمى هذه الطريقة بعد طريقة onDestroy () للإعلام بأن القطعة Fragment  قد تم فصله عن نشاط الاستضافة الخاص به مما يعني فصل الجزء عن نشاط المضيف الخاص به.

فيما يلي  كود مثال لطريقة onDetach ().

	 
	 @Override
	 public void onDetach() {
	 super.onDetach();
	 // add your code here which executes when fragment has been disassociated from its hosting activity
	 }
   
   

مثال على دورة حياة القطع  Fragment في Android Studio :

فيما يلي مثال على دورة حياة القطعة Fragment . في هذا المثال نعرض استخدام طرق رد نداء مختلفة القطعة Fragment . في هذا نقوم بإنشاء نشاط وتحديد القطعة Fragment  في النشاط باستخدام علامة <fragment>. في الجزء الخاص بنا ، أي TestFragment ، نتجاوز جميع الطرق وفي كل طريقة نقوم بتعيين رسالة يتم عرضها في ملف السجل الخاص بنا.

يمكنك أدناه تنزيل الكود ، والاطلاع على الإخراج النهائي والشرح خطوة بخطوة للمثال:

كود التحميل

الجزء التعليمي لدورة الحياة Fragment مع مثال في Android Studio

الخطوة 1: قم بإنشاء مشروع جديد وقم بتسميته IncludeTagExample

الخطوة 2: افتح res -> layout -> activity_main. xml (أو) main. xml وأضف الكود التالي:

في هذه الخطوة ، نفتح ملف xml ثم ننشئ القطعة Fragment  لعرض القطعة Fragment  في نشاطنا.

	 
	 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	 xmlns:tools="http://schemas.android.com/tools"
	 android:layout_width="match_parent"
	 android:layout_height="match_parent"
	 android:paddingBottom="@dimen/activity_vertical_margin"
	 android:paddingLeft="@dimen/activity_horizontal_margin"
	 android:paddingRight="@dimen/activity_horizontal_margin"
	 android:paddingTop="@dimen/activity_vertical_margin"
	 tools:context=".MainActivity">
	 <!-- Take a fragment in our activity -->
	 <fragment
	 android:id="@+id/test_fragment"
	 class="com.fragmentlifecycle.TestFragment"
	 android:layout_width="match_parent"
	 android:layout_height="match_parent"
	 tools:layout="@layout/fragment_test" />

	 </RelativeLayout>
   
   

الخطوة 3: افتح src -> package -> MainActivity. جافا

في هذه الخطوة ، لا نضيف أي شيء لأننا قمنا بالفعل بإضافة جزء من ملف xml الخاص بنا.

	 
	 package com.fragmentlifecycle;

	 import android.support.v7.app.AppCompatActivity;
	 import android.os.Bundle;

	 public class MainActivity extends AppCompatActivity {

	 @Override
	 protected void onCreate(Bundle savedInstanceState) {
	 super.onCreate(savedInstanceState);
	 setContentView(R.layout.activity_main);
	 }
	 }
   
   

الخطوة 4: الآن نحتاج إلى ملف Fragment و xml layout (xml). لذلك قم بإنشاء جزء جديد بالنقر بزر الماوس الأيمن على مجلد الحزمة الخاص بك وإنشاء فئة وتسميتها TestFragment وإضافة الكود التالي فيها.

	 package com.fragmentlifecycle;

	 import android.annotation.TargetApi;
	 import android.app.Activity;
	 import android.app.Fragment;
	 import android.os.Build;
	 import android.os.Bundle;
	 import android.util.Log;
	 import android.view.LayoutInflater;
	 import android.view.View;
	 import android.view.ViewGroup;

	 @TargetApi(Build.VERSION_CODES.KITKAT)
	 public class TestFragment extends Fragment {

	 private void printLog(String s) {
	 // display a message in Log File
	 Log.d("LifeCycle:", s);
	 }

	 @Override
	 public void onActivityCreated(Bundle savedInstanceState) {
	 super.onActivityCreated(savedInstanceState);
	 printLog("onActivityCreated Called");
	 }

	 @Override
	 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

	 View v = inflater.inflate(R.layout.fragment_test, container, false);
	 printLog("onCreateView Called");

	 return v;
	 }

	 @Override
	 public void onViewCreated(View view, Bundle savedInstanceState) {
	 super.onViewCreated(view, savedInstanceState);
	 printLog("onViewCreated Called");

	 }

	 @Override
	 public void onAttach(Activity activity) {
	 super.onAttach(activity);
	 printLog("onAttach Called");
	 }

	 @Override
	 public void onCreate(Bundle savedInstanceState) {
	 super.onCreate(savedInstanceState);
	 printLog("onCreate Called");
	 }

	 @Override
	 public void onDestroy() {
	 super.onDestroy();
	 printLog("onDestroy Called");
	 }

	 @Override
	 public void onDestroyView() {
	 super.onDestroyView();
	 printLog("onDestroyView Called");
	 }

	 @Override
	 public void onDetach() {
	 super.onDetach();
	 printLog("onDetach Called");
	 }

	 @Override
	 public void onPause() {
	 super.onPause();
	 printLog("onPause Called");
	 }

	 @Override
	 public void onResume() {
	 super.onResume();
	 printLog("onResume Called");
	 }

	 @Override
	 public void onStart() {
	 super.onStart();
	 printLog("onStart Called");
	 }

	 @Override
	 public void onStop() {
	 super.onStop();
	 printLog("onStop Called");
	 }

	 }
   
   

الخطوة 5:  الآن قم بإنشاء ملف تخطيط xml جديد عن طريق النقر بزر الماوس الأيمن على res / layout -> New -> Layout Resource File وقم بتسميته على أنه fragment_test وأضف الكود التالي فيه.

في هذه الخطوة ، نقوم بإنشاء TextView لعرض رسالة مثل "Please Check Logcat. !!!" على الشاشة.

	 <?xml version="1.0" encoding="utf-8"?>
	 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	 android:layout_width="match_parent"
	 android:layout_height="match_parent"
	 android:orientation="vertical">

	 <!-- Create a TextView -->

	 <TextView
	 android:layout_width="match_parent"
	 android:layout_height="match_parent"
	 android:gravity="center"
	 android:text="Please Check Logcat.!!!"
	 android:textColor="#000"
	 android:textSize="25sp" />
	 </LinearLayout>
   
   

المخرج :

تحقق من logcat في Android Studio وسترى طرق Fragment Lifecycle فيه .