tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            فرگمنت fragment در اندروید – برنامه نویسی اندروید – قسمت شانزدهم

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • فرگمنت fragment در اندروید – برنامه نویسی اندروید – قسمت شانزدهم
            آموزش برنامه نویسی اندروید
            تبادل اطلاعات بین اکتیویتی ها با اینتنت (Intent)
            16 خرداد 1395
            آموزش SQL Server
            آموزش SQL Server – قسمت هفدهم
            21 خرداد 1395
            منتشر شده توسط خانم منطق
            آموزش برنامه نویسی اندروید

            آموزش برنامه نویسی اندروید

            در قسمت شانزدهم آموزش برنامه نویسی اندروید مبحث فرگمنت در اندروید را آموزش میدهیم (fragment در برنامه نویسی اندروید). به علاوه توضیحاتی درباره ماهیت فرگمنت ها و چرخه حیات آنها مثالی ساده برای این مبحث نیز ذکر کرده ایم که در ادامه بیشتر درباره این مبحث صحبت خواهیم کرد.

            فرگمنت fragment در اندروید – برنامه نویسی اندروید – قسمت شانزدهم

            توجه : برای مشاهده تصاویر در سایز اصلی بر روی آنها کلیک کنید.

            فرگمنت در اندروید

            در آموزش های پیش آموختیم که یک اکتیویتی چیست و چگونه میتوان از آن استفاده کرد.در صفحه های کوچک (مثل گوشی های هوشمند) یک اکتیویتی تمام صفحه را اشغال میکند پس با استفاده از چند نما(View) به رابط کاربری برنامه خود شکل میدهیم.یک اکتیویتی اصولا ظرفی برای نماها است.اما اگر برنامه در یک صفحه نمایش بزرگتر مانند تبلت نمایش داده شود کاملا به هم ریخته خواهد شد چرا که نمایش شما برای صفحه کوچکتر طراحی شده و برای صفحه های بزرگتر نیز میبایستی دوباره چینش صوت بگیرد.این حالت باعث پیچیدگی در طراحی نما خوهد شد.

            ایده بهتر برای رفع این مشکل ایجاد چند اکتیویتی کوچک است که هرکدام دارای نمای خود باشد.در زمان یک اکتیویتی میتواند شامل چندین اکتیویتی کوچک باشد که البته جهت آن بستگی جهت صفحه نمایش دارد(عمودی یا افقی) در اندروید ۳ به بالا این اکتیویتی های کوچک را فرگمنت ها گویند.

            تصور کنید فرگمنت یک نوع دیگر از اکتیویتی است.فرگمنت ها برای نمایش نما بوجود می آیند کاملا مثل اکتیویتی ها. فرگمنت ها همیشه در دل اکتیویتی ها جای میگیرند برای مثال تصویر زیر را در نظر بگیرید

            فرگمنت در اندروید

            فرگمنت در اندروید

            طبق تصویر فوق تصور کنید Fragment 1 یک لیست از عناوین کتاب است و Fragment 2 حاوی یک TextView و ImageView و… میباشد.

            حال فرض کنید برنامه را درون یک دستگاه اندروید در حالت عمودی(مثل یک گوشی هوشمند) اجر کنیم اجرا کنیم در این صورت ممکن است فرگمنت ۱ در یک اکتیوتی و فرگمنت ۲ در اکتیویتی دیگر قرار گیرد هرگاه کابر آیتمی را از لیت فرگمنت ۱ انتخاب کند فرگمنت ۲ اجرا شود.

            فرگمنت در اندروید

            فرگمنت در اندروید

            حال اگر برنامه را به صورت افقی درون دستگاهی مانند تبلت نمایش دهیم هر دو فرگمنت کنار یکدیگر اجرا میشوند

            فرگمنت در اندروید

            فرگمنت در اندروید

            از این بحث میتوان چنین دریافت که فرگمنت ها راه حل جامعی را برای رفع مشکل نماها در رابط کاربری اندروید ارایه میدهند. فرگمنت ها از بخش های کلیدی برنامه اندروید شما هستند میتوانند به صورت پویا اضافه و حذف شوند تا بهترین رابط کاربری را برای دستگاه بوجود آورند.

            چرخه حیات فرگمنت ها

            همانند اکتیوتی ها فرگمنت ها نیز چرخه حیات دارند هنگام ایجاد یک فرگمنت حالات زیر رخ میدهد

            • ()onAttach
            • ()onCreate
            • ()onCreateView
            • ()onActivityCreated

            وقتی بک فرگمنت نمایش داده میشود حالات زیر رخ میدهد

            • ()onStart
            • ()onResume

            وقتی بک فرگمنت به حالت Background یا پس زمینه میرود و بدون آنکه نابود شود از حالت نمایش پنهان شود

            • ()onPause
            • ()onStop

            وقتی که فرگمنت نابود میگردد (یعنی زمانی که یک اکتیوتی میزبان فرگمنت را نابود میکند)

            • ()onPause
            • ()onStop
            • ()onDestroyView
            • ()onDestroy
            • ()onDetach

            همانند اکتیویتی ها میتوان یک وهله از فرگمنت را به وسیله شی Bundle در حالت زیر بازیابی کرد

            • ()onCraeate
            • ()onCreateView
            • ()onActivityCreate

            بیشتر حالاتی که ممکن است برای فرگمنت اتفاق بیفتد شبیه حالاتی است که برای اکتیویتی آن اتفاق می افتد چند حالت که مختص فرگمنت ها هستند به شرح ذیل است :

            • ()onAttached : وقتی که فرگمنتی به اکتیویتی ملحق میشود فراخوانی میگردد.
            • ()onCreatedView : برای ایجاد view در فرگمنت فراخوانی میشود.
            • ()onActivityCreated : وقتی که متد ()onCreate اکتیوتی تمام شد فراخوانی میشود.
            • ()onDestroyView : وقتی که view فرگمنت حذف شود فراخوانی میگردد.
            • ()onDetach : وقتی که فرگمنتی از اکتیویتی جدا شود فراخوانی میگردد.

            نکته قابل توجه در رابطه با تفاوت اکتیویتی و فرگمنت این است که زمانی که اکتیوتی به پس زمینه میرود درواقع back stack قرار میگیرد.این نکته به اکتیویتی اجازه میدهد تا وقتی کابر دکمه back رافشرد اکتیویتی قابل برگشت باشد. اما در مورد فرگمنت ها این اتفاق به صورت خودکار صورت نمیپذیرد و در back stack قرار نمیگیرند مگر اینکه متد ()addToBackStack را در تراکنش های فرگمنت به صورت صریح فراخوانی کنید.

            حال یک مثال ساده برای فرگمنت ها آموزش میدهیم که براساس افقی یا عمودی بودن صفحه دستگاه یکی از فرگمنت ها را نمایش میدهد

            ابتدا پروژه جدیدی با نام FragmentsPrj ایجاد کرده و دو فایل xml با نام های fragment1 و fragment 2 در مسیر res/layout ایجاد کرده و محتویاتشان را چنان تغییر میدهیم

            محتوی fragment1 که تنها یک textview ایجاد کرده و در صورت افقی بودن نشان داده میشود

            <TextView
            
            android:layout_width="fill_parent"
            
            android:layout_height="wrap_content"
            
            android:text="this is Landscape Fragment"
            
            android:textColor="#000000"
            
            android:textSize="25px" />
            

            محتوی fragment 2 که در صورت عمودی بودن دستگاه نشان داده میشود

            <TextView
            
            android:layout_width="fill_parent"
            
            android:layout_height="wrap_content"
            
            android:text="this is Portrate Fragment"
            
            android:textColor="#000000"
            
            android:textSize="25px" />
            

            حال درون فایل activity_main.xml چنین کدنویسی میکنیم

            <fragment
            
            android:name="com.example.fragments"
            
            android:id="@+id/fragment1"
            
            android:layout_weight="1"
            
            android:layout_width="0dp"
            
            android:layout_height="match_parent" />
            
            <fragment
            
            android:name="com.example.fragments"
            
            android:id="@+id/fragment2"
            
            android:layout_weight="2"
            
            android:layout_width="0dp"
            
            android:layout_height="match_parent" />
            

            حال دو کلاس جاوا برای دو فرگمنت ایجاد شده با نام های Fragment1 و Fragment2 ایجاد کرده و درون فایل Fragment1.java چنین کدنویسی میکنیم

            import android.app.Fragment;
            
            import android.os.Bundle;
            
            import android.view.*;
            
            public class Fragment1 extends Fragment {
            
                    @Override
            
                    public View onCreateView(LayoutInflater inflater,
                    ViewGroup container, Bundle savedInstanceState)
            
                    {
                             //--Inflate the layout for this fragment--
            
                             return inflater.inflate(R.layout.fragment1, container, false);
                    }
            }
            

            و درون فایل Fragment2.java نیز بدین صورت

            import android.app.Fragment;
            
            import android.os.Bundle;
            
            import android.view.*;
            
            public class Fragment2 extends Fragment {
            
                    @Override
            
                    public View onCreateView(LayoutInflater inflater,
                    ViewGroup container, Bundle savedInstanceState)
            
                    {
                             //--Inflate the layout for this fragment--
            
                             return inflater.inflate(R.layout.fragment2, container, false);
                    }
            }
            

            حال در MainActivity.java برای مشخص کردن اکتیویتی مناسب و نمایش آن چنین کدنویسی میکنیم

            import android.os.Bundle;
            
            import android.app.Activity;
            
            import android.app.FragmentManager;
            
            import android.app.FragmentTransaction;
            
            import android.content.res.Configuration;
            
            import android.view.WindowManager;
            
            public class MainActivity extends Activity {
            
               @Override
            
               protected void onCreate(Bundle savedInstanceState) {
            
                  super.onCreate(savedInstanceState);
            
                  Configuration config = getResources().getConfiguration();
            
                  FragmentManager fragmentManager = getFragmentManager();
            
                  FragmentTransaction fragmentTransaction =
            
                  fragmentManager.beginTransaction();
            
                  // Check the device orientation and act accordingly 
            
                  if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            
                     // Landscape mode of the device
            
                     Fragment1 f1 = new Fragment1();
            
                     fragmentTransaction.replace(android.R.id.content, f1);
            
                  }else{
            
                       // Portrait mode of the device
            
                     Fragment2 f2 = new Fragment2();
            
                     fragmentTransaction.replace(android.R.id.content, f2);
            
                  }
            
                  fragmentTransaction.commit();
            
               }
            
            }
            

            حال میتوان برنامه را اجرا کرد و نتیجه ا بسته به دستگاه اجرا کننده مطابق شکل زیر ببینید

            fragment در اندروید

            fragment در اندروید

            کار با fragment در اندروید

            یک فرگمنت در اندروید بسیار به اکتیویتی شباهت دارد چرا که دارای کلاس جاوا است و همچنین رابط کاربری خود را از xml بارگذاری میکند.کلاس جاوایی که برای فرگمنت نوشته میشود باید کلاس پایه fragment را بسط دهد

            public class Fragment2 extends Fragment {
            

            برای ترسیم رابط کاربری یک فرگمنت در اندروید متد onCreateView() را override میکنیم این متد یک شی از نوع View را برمیگرداند

            @Override
            
                    public View onCreateView(LayoutInflater inflater,
                    ViewGroup container, Bundle savedInstanceState)
            
                    {
            
                         //--Inflate the layout for this fragment--
            
                         return inflater.inflate(R.layout.fragment2, container, false);
            
                    }
            

            در اینجا از شی LayoutInflater برای برجسته کردن رابط کاربری از فایل xml موردنظر (در این مورد R.layout.fragment2) استفاده شده.آرگومان container به ViewGroup والد اشاره داردکه همان اکتیویتی است که شما سعی دارید آن را در فرگمنت Enable کنید. آرگومان savedInstanceState به شما این قابیت را میدهد تا فرگمنت را به حالت ذخیره شده قبلی بازگردانید.

            برای افزودن فرگمنت به اکتیویتی نیز از عنصر <fragment> استفاده میکنیم.

            <fragment
            
            android:name="com.example.fragments"
            
            android:id="@+id/fragment1"
            
            android:layout_weight="1"
            
            android:layout_width="0dp"
            
            android:layout_height="match_parent" />
            

            به این نکته دقت کنید که به هر فرگمنت در اندروید یک شناسه منحصر به فرد اختصاص دهید. میتوان این کار را به وسیله ویژگی های android:id یا android:tag انجام داد.

            مدرس : خانم مهندس منطق

            تبادل اطلاعات بین اکتیویتی ها با اینتنت – برنامه نویسی اندروید – قسمت پانزدهم

            ارتباط بین فرگمنت ها در اندروید – برنامه نویسی اندروید – قسمت هفدهم

            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            دیدگاهتان را بنویسید لغو پاسخ

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

            ساخت اپلیکیشن های موبایل

            • ساخت اپلیکیشن فروشگاهی
            • ساخت اپلیکشن ابزاری و خدماتی
            • ساخت اپلیکیشن آموزشی
            • و هزاران موضوع دیگر

             
            کلیک کنید

            آخرین دیدگاه ها

            • 9 اسفند 1401

              مهری اصغری نظر در پیاده سازی اولین پروژه با فلاتر Flutter

            • 26 آبان 1401

              سجاد نظر در پروژه مدیریت سیستم مدرسه با سی شارپ و sql server

            • 7 خرداد 1401

              داودی نظر در آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج