Android fragmentum életciklus
ma megtudjuk Android fragmentum életciklus és végre egy tevékenység osztály, amely két töredékek android alkalmazás.
Android Fragment
Fragment
az Android osztály dinamikus felhasználói felületek létrehozására szolgál. A fragmentumot a tevékenységen belül kell használni. A töredékek legnagyobb előnye, hogy egyszerűsíti a felhasználói felület létrehozásának feladatát több képernyőméretre. A tevékenység tetszőleges számú töredéket tartalmazhat.
az Android töredék önmagában nem a Nézet alosztálya, amely a legtöbb más felhasználói felület-összetevő. Ehelyett egy töredéknek van egy nézete benne. Ez a nézet végül megjelenik abban a tevékenységben, amelyben a töredék él.
mivel az android töredék nem nézet, egy tevékenységhez való hozzáadás kissé másnak tűnik, mint egy nézet hozzáadása (pl. TextView). Egy töredék kerül hozzáadásra a tevékenységen belüli Nézetcsoporthoz. A töredék nézete ezen a Nézetcsoporton belül jelenik meg.
az alábbi ábra azt mutatja, hogy mi történik, ha egy töredék hozzáadódik egy tevékenységhez:
először a tevékenység hivatkozást kap a töredékre. Ezután hivatkozást kap a Nézetcsoportra, amelyben a töredék nézete megjelenik. Ezután a tevékenység hozzáadja a töredéket. A töredék ezután létrehozza a nézetét, majd visszaadja a tevékenységhez. A nézet ezután beillesztésre kerül a Nézetcsoport szülőjébe, a töredék pedig életben van.
fragmentum életciklusa
Android fragmentum életciklusa az alábbi képen látható.
Az alábbiakban a fragmentum életciklusának módszerei találhatók.
-
onAttach()
: ezt a módszert először hívják, még az onCreate () előtt is, tudatva velünk, hogy a töredéke egy tevékenységhez kapcsolódik. Ön át a tevékenység, amely otthont ad a fragmentum -
onCreateView()
: A rendszer felhívja ezt a visszahívást, amikor itt az ideje, hogy a töredék először rajzolja meg felhasználói felületét. A töredék felhasználói felületének rajzolásához ebből a módszerből vissza kell adni egy Nézetkomponenst, amely a töredék elrendezésének gyökere. Visszatérhetünk null, ha a fragmentum nem nyújt UI -
onViewCreated()
: ezt onCreateView () után hívják. Ez különösen akkor hasznos, ha örökli az onCreateView () implementációt, de be kell állítanunk a kapott nézeteket, például egy Listfragmenttel, és mikor kell beállítani egy adaptert -
onActivityCreated()
:Ezt az onCreate() és onCreateView () után hívják fel, jelezve, hogy a tevékenység onCreate() befejeződött. Ha van valami, ami szükséges beállítást a töredék, az attól függ, hogy a tevékenység az onCreate() miután elkészült a munka, akkor onActivityCreated() használható, amely inicializáló munkát -
onStart()
: A onStart() metódus, ha a töredék lesz látható -
onPause()
: A rendszer hív ez a módszer, mint az első jele annak, hogy a felhasználó elhagyja a töredéke. Ez általában az, ahol meg kell elkövetni minden olyan változás, hogy fenn kell tartani túl a jelenlegi felhasználói munkamenet -
onStop()
: fragmentum lesz leállítva hívja onStop () -
onDestroyView()
: ez az úgynevezett előtt onDestroy (). Ez az onCreateView () megfelelője, ahol beállítottuk az UI-t. Ha vannak olyan dolgok, amelyeket meg kell tisztítani a felhasználói felületen, akkor ezt a logikát az onDestroyView() -
onDestroy()
: onDestroy () hívott, hogy nem végleges tisztítsák meg a fragmentum állapotát, de nem garantált, hogy hívják az Android platform. -
onDetach()
: az onDestroy () után hívják, hogy értesítse, hogy a fragmentumot elválasztották a tárhelytevékenységétől
Android fragmentum osztályok
fragmentumokat adtak hozzá az Android API-hoz Honeycomb(API 11).
-
android.app.Fragment
: az alaposztály minden fragmentum definícióhoz -
android.app.FragmentManager
: Egy -
android.app.FragmentTransaction
: a fragmentum műveletek atomkészletének végrehajtására szolgáló osztály
a Google által biztosított kompatibilitási csomagkönyvtár használatakor a következő osztályok kerülnek végrehajtásra.
-
android.support.v4.app.FragmentActivity
: A kompatibilitási alapú fragmentum (és loader) funkciókat használó összes tevékenység alaposztálya android.support.v4.app.Fragment
android.support.v4.app.FragmentManager
android.support.v4.app.FragmentTransaction
Android fragmentum onCreateView()
itt van egy minta fragmentum segítségével oncreateview() annak végrehajtására:
onCreateView()
metódus kap egy layoutinflater, egy nézetcsoport és egy köteg paraméterként.
LayoutInflater
egy olyan összetevő, amely létrehozhat nézet példány alapján elrendezés XML fájlokat. Mint látható, a példa valójában ezt teszi a layout.inflate()
hívásával. inflate()
a módszer három paraméterek: Az id egy elrendezés XML fájl (belső R. elrendezés), a szülő ViewGroup, amelybe a töredék szerint egészül ki, a harmadik logikai mondom, hogy a töredék szerint, mint a felfújt az elrendezés XML fájlt kell illeszteni a szülő ViewGroup. Ebben az esetben hamis lesz, mert a nézetet máshol a szülő Nézetcsoporthoz csatoljuk, az általunk hívott Android-kód egy részével. Ha a false-t utolsó paraméterként adja át a felfújáshoz (), akkor a szülő Nézetcsoport továbbra is a felfújt nézet elrendezési számításához használható, így a null-t nem adhatja át szülő Nézetcsoportként .
ViewGroup
az onCreateView() paramétere az a szülő Nézetcsoport, amelybe a töredék nézetét be kell illeszteni. Ez egy Nézetcsoport a tevékenységen belül, amely “gazdagítja” a töredéket.
Bundle
az onCreateView() paramétere egy köteg, amelyben a töredék adatokat menthet, akárcsak egy tevékenységben.
Android Fragment Example
Android fragments example project comprises of a single activity holding two fragments: TextFragment and MenuFragment respectively.
Android Fragment Example Code
The MainActivity
holds the two fragments TextFragment
and MenuFragment
. Így lehetővé teszi, eleve meghatározó a töredékek az xml elrendezés
activity_main.xml
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="1.0"> <fragment android:layout_height="match_parent" android:layout_width="match_parent" class="journaldev.com.fragments.fragments.MenuFragment" android:id="@+id/fragment" android:layout_weight="0.5"/> <fragment android:layout_width="match_parent" android:layout_height="match_parent" class="journaldev.com.fragments.fragments.TextFragment" android:id="@+id/fragment2" android:layout_weight="0.5"/></LinearLayout>
Mint láthatjuk, a class fájlokat a töredékek, amelyek egy része ennek a tevékenységnek vagy meghatározott class=”journaldev.com.töredékek.töredékek.TextFragment”
A töredék osztályok, valamint az elrendezés határozza meg, mint látható, a töredék alatt.
package journaldev.com.fragments.fragments;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import journaldev.com.fragments.R;public class TextFragment extends Fragment { TextView text,vers; @Override public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.text_fragment, container, false); text= (TextView) view.findViewById(R.id.AndroidOs); vers= (TextView)view.findViewById(R.id.Version); return view; } public void change(String txt, String txt1){ text.setText(txt); vers.setText(txt1); }}
text_fragment.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:gravity="center" android:background="#5ba4e5" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40px" android:textColor="#ffffff" android:layout_gravity="center" android:id="@+id/AndroidOs"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#ffffff" android:textSize="30px" android:id="@+id/Version"/></LinearLayout>
a TextFragment az android verzió nevét és számát tartalmazó szövegmegtekintésekből áll.
package journaldev.com.fragments.fragments;import android.app.ListFragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ListView;import journaldev.com.fragments.R;public class MenuFragment extends ListFragment { String AndroidOS = new String { "Cupcake","Donut","Eclair","Froyo","Gingerbread","Honeycomb","Ice Cream SandWich","Jelly Bean","KitKat" }; String Version = new String{"1.5","1.6","2.0-2.1","2.2","2.3","3.0-3.2","4.0","4.1-4.3","4.4"}; @Override public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { View view =inflater.inflate(R.layout.list_fragment, container, false); ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, AndroidOS); setListAdapter(adapter); return view; } @Override public void onListItemClick(ListView l, View v, int position, long id) { TextFragment txt = (TextFragment)getFragmentManager().findFragmentById(R.id.fragment2); txt.change(AndroidOS,"Version : "+Version); getListView().setSelector(android.R.color.holo_blue_dark); }}
list_fragment.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@android:id/list" /></LinearLayout>
a MenuFragment megjeleníti a ListView-t. Mint látható itt, az elrendezés ListView alapértelmezett simple_list_item_1 szemben az egyéni elrendezés hoztunk létre a ListView az előző cikkben.
a Főaktivitás meghívja a setContentView-t az onCreate módszerből, ez az. A töredékeket az xml fájlból hívják.
alternatívaként hozzáadhatjuk a tevékenységi osztály töredékeit a FragmentManager
használatával, amint az az alábbi részletben látható:
getFragmentManager() .beginTransaction() .add(R.id.fragmentParentViewGroup, new MyFragment()) .commit();
itt az id fragmentParentViewGroup tartozik a framelayout alább látható:
<FrameLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:id="@+id/fragmentParentViewGroup" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MyActivity" tools:ignore="MergeRootFrame" />
Android fragmentum példa App
Az alábbiakban látható a kimenet által termelt projekt, láthatjuk, hogy két töredékek vannak jelen itt, és ha kiválaszt egy közülük a bal oldali fragmentum, ADATOK lesz lakott a jobb oldali töredékben.
letöltheti a végleges android fragmentum projektet az alábbi linkről.