اموزش فرگمنت در کاتلین

دوستان عزیز امیدوارم حالتون عالی باشه تو این اموزش میخواهم بهتون یاد بدم چطوری در زبان کاتلین فرگمنتی را استارت و وقتی به فرگمنت B رفتی با زدن دکمه بک به فرگمنت A برگردی که پیچیده تر ان میشه مباحث یک اکتیویتی و چند فرگمنت که بهتون پیشنهاد میکنم اون را هم یاد بگیرید خوب ابتدا لایه های اکتیویتی اصلی و دو فرگمنتمان را طراحی میکنیماکتیوتی اصلی<?xml version="1.0" encoding="utf-8"?><LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <FrameLayout android:id="@+id/fragment_back_stack_frame_layout" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>فرگمنت A<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="This is Fragment One." android:textSize="20dp" android:gravity="center" android:textColor="@android:color/holo_red_light"/> <EditText android:id="@+id/edtinputtext" android:hint="Input text here." android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/fragment_back_stack_one_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go To Fragment Two" android:layout_gravity="center" android:textSize="20dp"/></LinearLayout>و در نهایت فرگمنت B<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="This is Fragment Two." android:textSize="20dp" android:gravity="center" android:textColor="@android:color/holo_green_light"/></LinearLayout>در کلاس اکتیویتی اصلی پروژه فرگمنت اول را فراخوانی میکنیمclass ActivityMain : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val fragmentManager = supportFragmentManager val fragmentTransaction = fragmentManager.beginTransaction() val fragmentOne = FragmentOne() fragmentTransaction.add(R.id.fragment_back_stack_frame_layout , fragmentOne , "Fragment One") fragmentTransaction.commit() }}و سپس در فرگمنت اول با کلیک روی Button فرگمنت دوم را صدا میزنیم ولی قبل از ان از حتما از AddToBackStack استفاده کنید تا فرگمنت در بک استک ذخیره شود سپس با فرگمنت اول Replace کرده و برای ماندن اطلاعات EditText هنگام زدن دکمه بک در فرگمنت دوم حتما ایدی برای ان ست کرده و ان را در فرگمنت Find کنیدclass FragmentOne : Fragment() , View.Listener { private lateinit var myview : View private lateinit var btnnextfragment : Button private lateinit var edtinputtext : EditText private var fragmentmanager: FragmentManager? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { myview = inflater.inflate(R.layout.fragment_one , container , false) fragmentmanager = fragmentManager findviews(myview) return myview } private fun findviews(view : View) { btnnextfragment = view.findViewById(R.id.fragment_back_stack_one_button) as Button edtinputtext = view.findViewById(R.id.edtinputtext) as EditText btnnextfragment.setListener(this) } override fun (v: View?) { when(v!!.id) { R.id.fragment_back_stack_one_button -> { var fragment = FragmentTwo() val fragmentTransaction = fragmentmanager!!.beginTransaction() fragmentTransaction.replace(R.id.fragment_back_stack_frame_layout , fragment , "Fragment Two") fragmentTransaction.addToBackStack(null) fragmentTransaction.commit() } } }}و در کلاس فرگمنت دومclass FragmentTwo : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.fragment_two , container , false) return view }}کار تمام است و پروژه را اجرا کرده و کلمه ای در ادیت تکس وارد کرده سپس روی باتن کلیک کرده و به فرگمنت دوم منتقل می شوید سپس دکمه Back را زده و فرگمنت یک بدون تغییرات در ادیت تکس نشان داده می شود در اخر اگر مطلب براتون مفید بوده لایک یادتون نره