Sobes.tech
Junior

როგორ შეიძლება განახორციელოთ ფრაგმენტები Activity-ში?

sobes.tech AI

პასუხი AI-სგან

Activity-ში ფრაგმენტები შეიძლება განხორციელდეს დეკლარატიულად XML-ით ან პროგრამულად FragmentManager-ის საშუალებით:

დეკლარატიულად (XML-ში):

<fragment
    android:id="@+id/my_fragment"
    android:name="com.example.MyFragment" // სრული კლასი ფრაგმენტის
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • ფრაგმენტი ემატება Activity-ის შექმნის დროს.
  • მარტივია სტატიკურ განლაგებებისთვის.
  • ნაკლებად მოქნილია დინამიკური ოპერაციებისათვის.

პროგრამულად (FragmentManager-ის საშუალებით):

// Activity-ის მეთოდის შიგნით, მაგალითად, onCreate ან მოვლენაზე
val fragmentManager = supportFragmentManager // AppCompatActivity-ისთვის
val fragmentTransaction = fragmentManager.beginTransaction()

// ფრაგმენტის დამატება
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)

// ფრაგმენტის შეცვლა (არსებული ამოიღებს და ახალი დაამატებს)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)

// ფრაგმენტის წაშლა
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// თუ (fragmentToRemove != null) {
//     fragmentTransaction.remove(fragmentToRemove)
// }

// Back Stack-ში დამატება (მომხმარებელს საშუალებას აძლევს დაბრუნდეს წინამორბედ ფრაგმენტზე)
fragmentTransaction.addToBackStack(null) // ტეგის სტრიქონი (null-იც შეიძლება)

// ტრანზაქციის დასრულება
fragmentTransaction.commit() // ასინქრონული შესრულება
// ან
// fragmentTransaction.commitNow() // სინქრონული შესრულება
  • FragmentManager გამოიყენება ფრაგმენტების მართვისთვის.
  • FragmentTransaction გამოიყენება ოპერაციების შესასრულებლად (დამატება, წაშლა, შეცვლა და ა.შ.).
  • გთავაზობთ მეტი მოქნილობას UI-ს დინამიკური ცვლილებისთვის.
  • შეიძლება მართოს Back Stack-ი ნავიგაციისთვის.

კონტეინერის გამოყენება:

დინამიკური დამატებისა ან შეცვლისთვის ჩვეულებრივ გამოიყენება XML-ით განსაზღვრული კონტეინერი, მაგალითად, FrameLayout ან LinearLayout:

<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

შემდეგ Activity-ის კოდში ფრაგმენტი ამ კონტეინერში დამატება ან შეცვლა ხდება:

მნიშვნელოვანი ასპექტები:

  • ფრაგმენტის სიცოცხლის ციკლი тесно связана с Activity-ის სიცოცხლის ციკლთან.
  • FragmentManager მართავს ფრაგმენტის სიცოცხლის ციკლს და მდგომარეობას.
  • FragmentTransaction შესრულდება ატომურად (ან მთელი ოპერაცია, ან არაფერი).
  • Back Stack-ის გამოყენებისას აუცილებელია addToBackStack()-ის გამოძახება.
  • supportFragmentManager გამოიყენება AppCompatActivity-ში.