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
FragmentManagertiek izmantots fragmentu pārvaldībai.FragmentTransactiontiek 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.
FragmentManagerpārvalda dzīves ciklu un stāvokli.- Fragmenta transakcija tiek veikta atomāri.
- Izmantojot Back Stack, ir jāizsauc
addToBackStack(). supportFragmentManagertiek izmantotsAppCompatActivity.