Sobes.tech
Junior

Kā var īstenot fragmentus Activity?

sobes.tech AI

Atbilde no AI

Aktīvās fragmentus var realizēt deklaratīvi XML vai programmatiski, izmantojot FragmentManager.

Deklaratīvi (XML):

<fragment
    android:id="@+id/my_fragment"
    android:name="com.example.MyFragment" // Pilns fragmenta klases nosaukums
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • Fragmentu pievieno, izveidojot Activity.
  • Ļoti ērti statiskiem izkārtojumiem.
  • Mazāk elastīgs dinamiskām operācijām.

Programmatiski (ar FragmentManager):

// Activity iekšienē, piemēram, onCreate vai notikuma laikā
val fragmentManager = supportFragmentManager // AppCompatActivity
val fragmentTransaction = fragmentManager.beginTransaction()

// Fragmenta pievienošana
val myFragment = MyFragment()
fragmentTransaction.add(R.id.fragment_container, myFragment)

// Fragmenta aizvietošana (noņem esošo un pievieno jauno)
// val newFragment = NewFragment()
// fragmentTransaction.replace(R.id.fragment_container, newFragment)

// Fragmenta noņemšana
// val fragmentToRemove = fragmentManager.findFragmentById(R.id.fragment_container)
// ja (fragmentToRemove != null) {
//     fragmentTransaction.remove(fragmentToRemove)
// }

// Pievienošana Back Stack (ļauj lietotājam atgriezties iepriekšējā fragmentā)
fragmentTransaction.addToBackStack(null) // Taga virkne (var būt null)

// Transakcijas pabeigšana
fragmentTransaction.commit() // Asinhrona izpilde
// vai
// fragmentTransaction.commitNow() // Sinhrona izpilde
  • FragmentManager tiek izmantots fragmentu pārvaldībai.
  • FragmentTransaction tiek izmantots operāciju veikšanai.
  • Nodrošina lielāku elastību UI dinamiskai izmaiņai.
  • Var pārvaldīt Back Stack navigācijai.

Konteineru izmantošana:

Dinamiskai pievienošanai vai aizvietošanai parasti izmanto XML definētu konteineru, piemēram, FrameLayout vai LinearLayout:

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

Tad fragmentu pievieno vai aizvieto šajā konteinerā.

Svarīgi aspekti:

  • Fragmenta dzīves cikls ir cieši saistīts ar Activity dzīves ciklu.
  • FragmentManager pārvalda dzīves ciklu un stāvokli.
  • Fragmenta transakcija tiek veikta atomāri.
  • Izmantojot Back Stack, ir jāizsauc addToBackStack().
  • supportFragmentManager tiek izmantots AppCompatActivity.