مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

آموزش ساخت UI اندرویدی با Fragment ها به زبان ساده

چگونه رابط کاربری اندروید بسازیم ؟ اگر بخواهیم در اندروید یک رابط کاربری بسازیم که چند قسمتی باشد و هر قسمت به صورت داینامیک و پویا عمل کند و اجزای رابط کاربری ما جدا از هم باشند بهتر است که اجزای کامپوننت ها و رفتار های Activityها را از هم جدا کنیم و در قالب یک سری ماژول ها قرار دهیم. شما می توانید این ماژول بندی را با استفاده از کلاس Fragment بسازید. این کلاس ها مانند activity های تو در تو عمل می کند و خودش layout خودش را داشته باشد و چرخه حیات خود را طی کند.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

ما ابتدا layout را برای fragment معرفی می کنیم. به همین صورت اگر چند تا fragment داشته باشیم می توانیم چند fragment را داخل یک activity قرار دهید. در نمایشگر های دستگاه ها ما سایز ها و اندازه های مختلفی داریم. یک صفحه کوچک می تواند در یک لحظه فقط یک fragment را نشان می دهد و یک صفحه بزرگتر می تواند چند fragment را نشان دهد. کلاس fragment نشان می دهد که چطوری می توان یک رابط کاربری داینامیک و پویا داشت.

ساخت یک fragment

همانطور که گفتیم یک fragment را شبیه به بخش های ماژولی یک activity می باشد که چرخه حیات خود را دارد و رویداد های ورودی خود را دریافت می کند و کارهای خود را می کند. به عبارت دیگر این یک sub-activity است. در این مطلب شروع به ساختن fragment ها می کنیم. برای ساخت یک fragment باید یک کلاس بسازیم که از کلاس Fragment ارث بری کرده باشد.

ساخت کلاس فرزند Fragment

برای ساخت یک کلاس Fragment باید از کلاس Fragment عمل extends را انجام دهیم و متدهای مهم آن را override کنیم برای مثال متد onCreateView را override کنیم. کار با Fragment بسیار شبیه به acitivity است. در مثال زیر یک Fragment را ساخته ایم.

public class MyFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // برای مشخص کردن لی اوت 
        return inflater.inflate(R.layout.my_view, container, false);
    }
}

Fragment هم مانند activity متدهایی مانند onPause, onStop, onResume دارد و شما می توانید از آن استفاده کنید.

افزودن Fragment به activity با استفاده از xml

خب ما الان یک Fragment را ساخته ایم. حال باید این Fragment ساخته شده را به یک activity اضافه کنیم تا بتوانیم از آن استفاده کنیم. به این نکته دقت داشته باشید که Fragment ها را می توان در چندین جا استفاده کرد. حال برای این که از Fragment ساخته شده در برنامه استفاده کنیم می توانیم آن را در xml مربوط به activity بیاوریم. در مثال زیر یک layout برای activity ساخته ایم و دو عدد fragment به آن اضافه کرده ایم. و همچنین کد جاوای مربوط به activity مورد نظر را آورده ایم.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="ir.itpro.android.fragments.MyFragment1"
              android:id="@+id/my_fragment1"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

    <fragment android:name=" ir.itpro.android.fragments.MyFragment2"
              android:id="@+id/my_fragment2"
              android:layout_weight="2"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

کد جاوای activity در زیر آمده است به کلاسی که از آن ارث بری کرده ایم دقت کنید.

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);
    }
}

دقت داشته باشید که اگر از ورژن های پایین تر اندروید مانند API10 و پایین تر از آن استفاده می کنیم باید کتابخانه های مورد نظر را دستی نصبت کنید. ولی در ورژن های بالا تر مشکلی پیش نخواهد آمد. اگر شما در پروژه های خودتان از AppCompatActivity استفاده می کنید و کتابخانه شما

com.android.support:appcompat-v7

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

نویسنده: مهدی عادلی فر

منبع: Itpro

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


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات