درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من
    اطلاعات مطلب
      مدرس/نویسنده
      مهدی عادلی فر
      امتیاز: 242797
      رتبه:6
      111
      196
      285
      1456
      مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم. پروفایل کاربر
      دوره های مرتبط
      دوره های توسینسو دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 17 قسط خریداری کنید
      با خرید این دوره مبلغ 5,445 تومان هدیه بگیرید
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 17 قسط خریداری کنید
      با خرید این دوره مبلغ 8,470 تومان هدیه بگیرید
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      مدرس: ایمان جوادی
      این دوره را در 13 قسط خریداری کنید
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      مدرس: مهدی عادلی فر
      این دوره را در 2 قسط خریداری کنید
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      مدرس: امیر حسین فضلیخانی
      این دوره را در 12 قسط خریداری کنید
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 27 قسط خریداری کنید
      با خرید این دوره مبلغ 8,110 تومان هدیه بگیرید
      دوره آموزشی برنامه نویسی حرفه ای پایتون به زبان ساده
      دوره آموزشی برنامه نویسی حرفه ای پایتون به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 23 قسط خریداری کنید
      با خرید این دوره مبلغ 7,425 تومان هدیه بگیرید
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 78 قسط خریداری کنید
      با خرید این دوره مبلغ 82,245 تومان هدیه بگیرید
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      مدرس: کاظم تقندیکی
      این دوره را در 20 قسط خریداری کنید
      با خرید این دوره مبلغ 7,040 تومان هدیه بگیرید
      دوره آموزشی ساخت ربات تلگرام
      دوره آموزشی ساخت ربات تلگرام
      مدرس: کاظم تقندیکی
      این دوره را در 8 قسط خریداری کنید
      دوره آموزشی طراحی رابط کاربری با JavaFX
      دوره آموزشی طراحی رابط کاربری با JavaFX
      مدرس: حسام رسولیان
      این دوره را در 13 قسط خریداری کنید
      دوره آموزشی Exploit نویسی به زبان Perl
      دوره آموزشی Exploit نویسی به زبان Perl
      مدرس: ایمان جوادی
      این دوره را در 7 قسط خریداری کنید
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      مدرس: کاظم تقندیکی
      این دوره را در 11 قسط خریداری کنید

      کار با Fragment ها در زمان اجرا در اندروید

      تاریخ 18 ماه قبل
      نظرات 0
      بازدیدها 397
      سلام به ITPRO های عزیز. اندازه صفحه دستگاه های اندرویدی بسیار متنوع است. این اندازه از گوشی های 3.5 اینچی شروع شده و تا 10 یا 13 اینچ می رود. بهتر است شما برنامه اندروید خودتان را طوری طراحی کنید که UX قوی داشته باشد باید اندازه صفحه را نیز در نظر بگیرید. در کار با Fragment ها می توان کاری کرد که UX کمی بهبود داده شود. همانطور که در مثال چت تلگرام در مطلب قبلی گفتیم در گوشی های کوچک یک Fragment دیده می شود ولی در دستگاه های با صفحه های بزرگ مانند تبلت ها می توان چند Fragment را کنار یکدیگر مشاهده کرد. برای مثال عکس زیر را ببینید.

      کار با Fragment ها در زمان اجرا در اندروید


      در عکس بالا ما دو Fragment در یک activity داریم که حالت نمایش آنها با توجه به اندازه صفحه نمایش تغییر می کند. یعنی در یک صفحه بزرگ هر دوی FragmentA , FragmentB نشان داده می شود ولی در دستگاه های کوچک فقط یک Fragment نمایش داده می شود و می توان از یک Fragment به Fragment دیگری رفت. اگر بخواهیم در زمان اجرا با Fragment ها کار کنیم باید از کلاس FragmentManager استفاده کنیم. این کلاس متدهایی را در خود دارد که می توانیم با کمک این متد ها Fragment ها را به یک activity اضافه کنیم و یا آن ها را از activity حذف کنیم و یا Fragmentها را با یکدیگر در داخل activity جایگزین کنیم.


      اضافه کردن یک Fragment به activity در زمان اجرا


      در قسمت های قبل گفتیم که می توان در زمان طراحی برنامه و در فایل layout مربوط به Activity با استفاده از تگ fragment، یک یا چند Fragment را به برنامه اضافه کرد. ولی مشکلی که این کار دارد این است که استاتیک و ثابت است. حال اگر ما بخواهیم در زمان اجرا Fragment ها را تغییر بدهیم و به خاطر ثابت بودن نمی توانیم این کار را انجام بدهیم. همانطور که گفتیم در زمان اجرا ما با استفاده از FragmentManager کارهای حذف و اضافه و تغییر Fragment ها را انجام میدهیم. به شکلی که با استفاده از این کلاس ما یک FragmentTransaction می سازیم. سپس از FragmentTransaction برای اضافه و حذف و جاگزینی و سایر کارهای مربوط به Fragment ها را انجام می دهیم. یک نکته مهم که باید در مورد کار با Fragment ها به آن توجه کنید این است که وقتی شما با Fragment ها کار می کنید باید دقت داشته باشید مخصوصا زمانی که می خواهید با Fragment ها در زمان اجرا کار کنید این است که در داخل layout مربوط به activity ها یک ویویی قرار دهیم که از نوع container باشد و بتوانیم Fragment را در داخل ان قرار دهیم. به طور مثال از ویوی FragmentLayout می توان برای قرار دادن Fragment ها استفاده کرد. مانند کد زیر
      <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/fragment_container"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />
      
      
      برای این که در کد جاوا FragmentManger مورد نظر را به دست آوریم از متد getSupportManager استفاده می کنیم. دقت داشته باشید که برای شروع به کار باید ابتدا یک تراکنش Fragment را شروع کنیم و بعد از آن اقدام به اضافه کردن Fragment مورد نظر کنیم. و بعد از این که Fragment را اضافه کردیم باید متد commit مربوط به تراکنش مورد نظر را فراخوانی نماییم. دقت داشته باشید که ممکن است که در طی برنامه چندین تراکنش را شروع کنیم و سپس آن را commit نماییم. برای مثال در کد زیر یک Fragment به کد layout که در بالا نوشتیم اضافه شده است.
      import android.os.Bundle;
      import android.support.v4.app.FragmentActivity;
      
      public class MainActivity extends FragmentActivity {
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.news_articles);
      
              // چک کردن این که اکتیویتی ما جایی برای فرگمنت دارد یا خیر
              if (findViewById(R.id.fragment_container) != null) {
      
                  
                  if (savedInstanceState != null) {
                      return;
                  }
      
                  // ساخت یک فرگمنت جدید
                  HeadlinesFragment firstFragment = new HeadlinesFragment();
      
      
      
                  // اضافه کردن فرگمن به اکتیویتی
                  getSupportFragmentManager().beginTransaction()
                          .add(R.id.fragment_container, firstFragment).commit();
              }
          }
      }
      
      چون که ما Fragment را در زمان اجرا به activity اضافه کردیم پس بعدا می توانیم در زمان اجرا آن را حذف کنیم و یا با یک Fragment دیگر آن را جاگزین نماییم. ولی اگر این کار را با <fragment> انجام داده بودیم نمی توانستیم این کار را بکنیم.

      جاگزین کردن یک Fragment با دیگری


      نحوه انجام کار جایگزینی یک Fragment با Fragment دیگر شبیه به اضافه کردن است ولی باید از متد replace به جای متد add استفاده کنیم. دقت داشته باشید که وقتی شما کاری مانند اضافه کردن و یا حذف و یا جایگزین کردن را بر روی Fragment انجام می دهید به دنبال آن می توانید این اجازه را به کاربر بدهید که کاری را که کرده است را undo کند و به عقد برگردد. برای این بازگشت به عقب باید قبل از این که شما تراکنش ساخته شده را قبل از این که commit کنید، آن را addToBackStack کنید. دقت داشته باشید که وقتی که شما این متد را قبل از commit کردن صدا می زنید fragment ی که می خواهید حذف کنید حذف نخواهد شود و فقط در حالت Stop نگهداری می شود و وقتی که کاربر دکمه back را زد fragment دوباره ریستارت می شود ولی وقتی که این متد اضافه نشده باشد وقتی که شما یک Fragment را حذف می کنید و یا آن را جایگزین می کنید دیگر آن فرگمنت نابود خواهد شد. در مثال زیر کدی آورده شده است که این مفاهیم را نشان می دهد.
      // ساخت فرگمنت
      ArticleFragment newFragment = new ArticleFragment();
      Bundle args = new Bundle();
      args.putInt(ArticleFragment.ARG_POSITION, position);
      newFragment.setArguments(args);
      
      FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
      
      // Replace whatever is in the fragment_container view with this fragment,
      // and add the transaction to the back stack so the user can navigate back
      transaction.replace(R.id.fragment_container, newFragment);
      transaction.addToBackStack(null);
      
      // Commit the transaction
      transaction.commit();
      
      
      ورودی که متد addToBackStack می گیرد یک رشته اختیاری است که برای کارهای پیشرفته می توان از آن استفاده کرد.ITPRO باشید.



      نویسنده: مهدی عادلی فر
      منبع: Itpro
      هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.


      برچسب ها
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      هیچ نظری ارسال نشده است

        برای ارسال نظر ابتدا به سایت وارد شوید

        arrow