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

دوستان عزیز امیدوارم حالتون عالی باشه تو این اموزش میخواهم بهتون یاد بدم چطوری در زبان کاتلین فرگمنتی را استارت و وقتی به فرگمنت 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 را زده و فرگمنت یک بدون تغییرات در ادیت تکس نشان داده می شود

در اخر اگر مطلب براتون مفید بوده لایک یادتون نره