اضافه کردن یک فرگمنت
در اینجا، یک فرگمنت را به بی آلایشترین نحوه اضافه میکنیم، یعنی آن را به فولدر XML پوسته می افزاییم.
برای اینکار، پوشه «activity_main.xml» را گشوده فرمائید و زبانهی «Text» را گزینش فرمایید. آنگاه کد تحت را در باطن «FrameLayout» مهم اضافه نمایید:
1 2android:id="@+id/details_fragment"
3class="com.raywenderlich.alltherages.RageComicDetailsFragment"
4android:layout_width="match_parent"
5android:layout_height="match_parent"/>
دراین قدم، یک تگ «» به پوسته اکتیویتی اضافه و نوع فرگمنتی که کلاس متبوع بایستی بسازد را مشخص و معلوم کردیم. مشخصهی ID که به «» دادهایم به وسیله «FragmentManager» ما یحتاج میباشد.
نرم افزار را بسازید و ایفا فرمائید. فرگمنت را مشاهده خواهید کرد:
اضافه کردن یک فرگمنت به طور پویا
آغاز فولدر «activity_man.xml» را مجددا گشوده نمائید و تگ «» که اضافه کرده بودید را حذف فرمائید. این کد را با لیست طراحی اپلیکیشن در مشهد کمیکها جایگزین خواهید کرد.
کلیک نمائید
پوشه «RageComicListFragment.kt» را که کد آحاد لیستها را داراست، گشوده نمایید. همانگونه که میبینید، «RageComicListFragment» هیچ خالقای ندارد و تنها یک «()newInstance» داراست.
کد لیستی که در «RageComicListFragment» جای دارد به چند منابع متکی میباشد. می بایست مطمئن گردید که فرگمنت یک ارجاع درست به «Context» داراست تا بتواند به آن منابع دسترسی داشته باشد. برای این فرمان از «()onAttach» به کارگیری میکنیم.
فولدر «RageComicListFragment.kt» را گشوده نمائید و کد ذیل را به بخش پکیجها اضافه فرمایید:
1import android.سیستم عامل.Bundle
2import android.support.v7.widget.GridLayoutManager
3
4«GridLayoutManager» به قرارگرفتن موردها در شرایط مطلوب در لیست ما امداد مینماید. پکیج آجل برای کدهای استاندارد فرگمنتها مثلا دستورها «override» میباشد.
5دو متدی که در کد ذیل آمدهمیباشد را در درون پوشه «RageComicListFragment.kt»، در بالای تعریف و تمجید «RageComicAdapter» اضافه نمائید:
6override fun onAttach(context: Context?) {
7super.onAttach(context)
8
9// Get rage face names and descriptions.
10val resources = context!!.resources
11names = resources.getStringArray(R.array.names)
12descriptions = resources.getStringArray(R.array.descriptions)
13urls = resources.getStringArray(R.array.urls)
14
15// Get rage face images.
16val typedArray = resources.obtainTypedArray(R.array.images)
17val imageCount = names.size
18imageResIds = IntArray(imageCount)
19for (i in 0..imageCount - 1) {
20imageResIds[i] = typedArray.getResourceId(i, 0)
21}
22typedArray.recycle()
23}
24
25override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
26savedInstanceState: Bundle?): View? {
27
28val view: View = inflater!!.inflate(R.layout.fragment_rage_comic_list, container,
29false)
30val activity = activity
31val recyclerView = view.findViewById(R.id.recycler_view) as RecyclerView
32recyclerView.layoutManager = GridLayoutManager(activity, 2)
33recyclerView.adapter = RageComicAdapter(activity)
34return view
35}
مشاهده بی نقص کدها
اسلوب «()onAttach» دربرگیرنده کدهایی میباشد که فرگمنت برای دسترسی به منابع از روش «Context» نیاز داراست. از آن جایی کهاین کد در «()onAttach» قرار گرفته میباشد، میتوانید مطمئن باشید که فرگمنت همواره یک «Context» دارای اعتبار داراست.
در روال «()onCreateView»، ظواهر «RageComicListFragment» را می سازیم که مشمول یک «RecyclerView» میباشد. به علاوه، چند امور روی آن اعمال میدهیم.
چنانچه می خواهید «View» یک فرگمنت را تحقیق نمایید، «()onCreateView» مکان قابل قبولی میباشد، چراکه «view» نو در آن تشکیل شدهمیباشد.
اکنون پوشه «MainActivity.kt» را گشوده فرمایید و مشی «()onCreate» را با کد پایین جایگزین نمایید:
1override fun onCreate(savedInstanceState: Bundle?) {
2super.onCreate(savedInstanceState)
3setContentView(R.layout.activity_main)
4
5if (savedInstanceState == null) {
6supportFragmentManager
7.beginTransaction()
8.add(R.id.root_layout, RageComicListFragment.newInstance(), "rageComicList")
9.commit()
10}
11}
در اینجا «RageComicListFragment» به «MainActivity» اضافه می گردد. درواقع «FragmentManager» عمل افزودن آن را اجرا می دهد.
آغاز «FragmentManager» خویش را با ارجاع به «supportFragmentManager» می سازیم، چراکه داریم از فرگمنتهای کتابخانهی «support» استعمال میکنیم.
بعد، از «FragmentManager» می خواهیم که یک جابهجایی را شروع نماید. این عمل را با صدا کردن «()beginTransaction» اجرا می دهیم. بعد عملیات افزودن را با صدا کردن «add» شروع می کنیم و مقادیر تحت را به آن می دهیم:
آیدی «view» در اکتیویتی که قرار میباشد فرگمنت را در خویش نگه دارااست. در شرایطیکه یک نگاه به «activity_main.xml» بیندازید، «id/root_layout+@» را مشاهده خواهید کرد.
مثالی فرگمنتی که قرار میباشد اضافه گردد.
یک حرفه که تحت عنوان یک آیدی یا این که تگ برای مثالی درست شده از فرگمنت فعالیت مینماید. اینکار به «FragmentManager» اذن میدهد که بعدا بتواند فرگمنت را برای شما پیدا نماید.
در غایت، با صدا کردن سیاق «()commit»، از «FragmentManager» می خواهیم که جابهجایی را اعمال دهد. درحال حاضر فرگمنت به اکتیویتی اضافه شده است.
نرم افزار را بسازید و ایفا فرمایید تا لیست کمیکها را ابتدا اپ ملاحظه کنید:
«FragmentManager» یاری کرد تا این فعالیت را بوسیله «FragmentTransactions» اعمال دهیم.
در کد بالا یک فرمان «if» وجود داراست که کدهای اکران فرگمنت را در آن قرار دادهایم. این کد نظارت مینماید که آیا این اکتیویتی شرایط ذخیره گردیدهای (Saved state) داراست یا این که نه. زمانی که یک اکتیویتی ذخیره گردیده باشد، کل فرگمنتهای آن نیز ذخیره می شوند. در صورتیکه این تحقیق را جاری ساختن ندهید، ممکن میباشد در غایت یک سری فرگمنت داشته باشید:
مدام حواستان بهاین باشد که شرایط ذخیره گردیدهی اکتیویتی چه تاثیری برروی فرگمنتهای شما دارااست.
اتصال دادهها
اضافه کردن یک فرگمنت
در اینجا، یک فرگمنت را به بی آلایشترین نحوه اضافه میکنیم، یعنی آن را به فولدر XML پوسته می افزاییم.
برای اینکار، پوشه «activity_main.xml» را گشوده فرمائید و زبانهی «Text» را گزینش فرمایید. آنگاه کد تحت را در باطن «FrameLayout» مهم اضافه نمایید:
1 2android:id="@+id/details_fragment"
3class="com.raywenderlich.alltherages.RageComicDetailsFragment"
4android:layout_width="match_parent"
5android:layout_height="match_parent"/>
دراین قدم، یک تگ «» به پوسته اکتیویتی اضافه و نوع فرگمنتی که کلاس متبوع بایستی بسازد را مشخص و معلوم کردیم. مشخصهی ID که به «» دادهایم به وسیله «FragmentManager» ما یحتاج میباشد.
نرم افزار را بسازید و ایفا فرمائید. فرگمنت را مشاهده خواهید کرد:
اضافه کردن یک فرگمنت به طور پویا
آغاز فولدر «activity_man.xml» را مجددا گشوده نمائید و تگ «» که اضافه کرده بودید را حذف فرمائید. این کد را با لیست طراحی اپلیکیشن در مشهد کمیکها جایگزین خواهید کرد.
کلیک نمائید
پوشه «RageComicListFragment.kt» را که کد آحاد لیستها را داراست، گشوده نمایید. همانگونه که میبینید، «RageComicListFragment» هیچ خالقای ندارد و تنها یک «()newInstance» داراست.
کد لیستی که در «RageComicListFragment» جای دارد به چند منابع متکی میباشد. می بایست مطمئن گردید که فرگمنت یک ارجاع درست به «Context» داراست تا بتواند به آن منابع دسترسی داشته باشد. برای این فرمان از «()onAttach» به کارگیری میکنیم.
فولدر «RageComicListFragment.kt» را گشوده نمائید و کد ذیل را به بخش پکیجها اضافه فرمایید:
1import android.سیستم عامل.Bundle
2import android.support.v7.widget.GridLayoutManager
3
4«GridLayoutManager» به قرارگرفتن موردها در شرایط مطلوب در لیست ما امداد مینماید. پکیج آجل برای کدهای استاندارد فرگمنتها مثلا دستورها «override» میباشد.
5دو متدی که در کد ذیل آمدهمیباشد را در درون پوشه «RageComicListFragment.kt»، در بالای تعریف و تمجید «RageComicAdapter» اضافه نمائید:
6override fun onAttach(context: Context?) {
7super.onAttach(context)
8
9// Get rage face names and descriptions.
10val resources = context!!.resources
11names = resources.getStringArray(R.array.names)
12descriptions = resources.getStringArray(R.array.descriptions)
13urls = resources.getStringArray(R.array.urls)
14
15// Get rage face images.
16val typedArray = resources.obtainTypedArray(R.array.images)
17val imageCount = names.size
18imageResIds = IntArray(imageCount)
19for (i in 0..imageCount - 1) {
20imageResIds[i] = typedArray.getResourceId(i, 0)
21}
22typedArray.recycle()
23}
24
25override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
26savedInstanceState: Bundle?): View? {
27
28val view: View = inflater!!.inflate(R.layout.fragment_rage_comic_list, container,
29false)
30val activity = activity
31val recyclerView = view.findViewById(R.id.recycler_view) as RecyclerView
32recyclerView.layoutManager = GridLayoutManager(activity, 2)
33recyclerView.adapter = RageComicAdapter(activity)
34return view
35}
مشاهده بی نقص کدها
اسلوب «()onAttach» دربرگیرنده کدهایی میباشد که فرگمنت برای دسترسی به منابع از روش «Context» نیاز داراست. از آن جایی کهاین کد در «()onAttach» قرار گرفته میباشد، میتوانید مطمئن باشید که فرگمنت همواره یک «Context» دارای اعتبار داراست.
در روال «()onCreateView»، ظواهر «RageComicListFragment» را می سازیم که مشمول یک «RecyclerView» میباشد. به علاوه، چند امور روی آن اعمال میدهیم.
چنانچه می خواهید «View» یک فرگمنت را تحقیق نمایید، «()onCreateView» مکان قابل قبولی میباشد، چراکه «view» نو در آن تشکیل شدهمیباشد.
اکنون پوشه «MainActivity.kt» را گشوده فرمایید و مشی «()onCreate» را با کد پایین جایگزین نمایید:
1override fun onCreate(savedInstanceState: Bundle?) {
2super.onCreate(savedInstanceState)
3setContentView(R.layout.activity_main)
4
5if (savedInstanceState == null) {
6supportFragmentManager
7.beginTransaction()
8.add(R.id.root_layout, RageComicListFragment.newInstance(), "rageComicList")
9.commit()
10}
11}
در اینجا «RageComicListFragment» به «MainActivity» اضافه می گردد. درواقع «FragmentManager» عمل افزودن آن را اجرا می دهد.
آغاز «FragmentManager» خویش را با ارجاع به «supportFragmentManager» می سازیم، چراکه داریم از فرگمنتهای کتابخانهی «support» استعمال میکنیم.
بعد، از «FragmentManager» می خواهیم که یک جابهجایی را شروع نماید. این عمل را با صدا کردن «()beginTransaction» اجرا می دهیم. بعد عملیات افزودن را با صدا کردن «add» شروع می کنیم و مقادیر تحت را به آن می دهیم:
آیدی «view» در اکتیویتی که قرار میباشد فرگمنت را در خویش نگه دارااست. در شرایطیکه یک نگاه به «activity_main.xml» بیندازید، «id/root_layout+@» را مشاهده خواهید کرد.
مثالی فرگمنتی که قرار میباشد اضافه گردد.
یک حرفه که تحت عنوان یک آیدی یا این که تگ برای مثالی درست شده از فرگمنت فعالیت مینماید. اینکار به «FragmentManager» اذن میدهد که بعدا بتواند فرگمنت را برای شما پیدا نماید.
در غایت، با صدا کردن سیاق «()commit»، از «FragmentManager» می خواهیم که جابهجایی را اعمال دهد. درحال حاضر فرگمنت به اکتیویتی اضافه شده است.
نرم افزار را بسازید و ایفا فرمایید تا لیست کمیکها را ابتدا اپ ملاحظه کنید:
«FragmentManager» یاری کرد تا این فعالیت را بوسیله «FragmentTransactions» اعمال دهیم.
در کد بالا یک فرمان «if» وجود داراست که کدهای اکران فرگمنت را در آن قرار دادهایم. این کد نظارت مینماید که آیا این اکتیویتی شرایط ذخیره گردیدهای (Saved state) داراست یا این که نه. زمانی که یک اکتیویتی ذخیره گردیده باشد، کل فرگمنتهای آن نیز ذخیره می شوند. در صورتیکه این تحقیق را جاری ساختن ندهید، ممکن میباشد در غایت یک سری فرگمنت داشته باشید:
مدام حواستان بهاین باشد که شرایط ذخیره گردیدهی اکتیویتی چه تاثیری برروی فرگمنتهای شما دارااست.
اتصال دادهها

معایب سبک ایده پردازی و فروش آن و درآمد از اندروید