Articles

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:

android fragmentum

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ó.

android fragmentum életciklus

Az alábbiakban a fragmentum életciklusának módszerei találhatók.

  1. 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
  2. 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
  3. 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
  4. 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
  5. onStart() : A onStart() metódus, ha a töredék lesz látható
  6. 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
  7. onStop(): fragmentum lesz leállítva hívja onStop ()
  8. 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()
  9. 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.
  10. 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).

  1. android.app.Fragment: az alaposztály minden fragmentum definícióhoz
  2. android.app.FragmentManager : Egy
  3. android.app.FragmentTransaction: a fragmentum műveletek atomkészletének végrehajtására szolgáló osztály
  4. 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

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.

android fragmentumok példa, fragmentum életciklus

letöltheti a végleges android fragmentum projektet az alábbi linkről.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük