You are on page 1of 43

Koncepti aktivnosti,

fragmenti i namere
Doc. Dr Vladimir Milievi
UVOD

Osnovni koncepti Android aplikacije su: aktivnosti, fragmenti i namene.

Aktivnost je odreena prozorom koji obuhvata korisniki interfejs mobilne aplikacije. Aplikacija moe da ima jednu ili vie aktivnosti
iji je osnovni zadatak obezbeivanje komunikacije izmeu korisnika i aplikacije.
Fragmenti predstavljaju male aktivnosti koje su grupisane na nain da formiraju jednu veu, sloenu, aktivnost. Poseban akcenat e
biti stavljen na mogunost istovremene upotrebe fragmenata i aktivnosti.
Konano, u daljem izlaganju bie govora o veoma vanom mobilnom konceptu namerama. Namere predstavljaju mehanizam
pomou kojeg aktivnosti iz razliitih aplikacija funkcioniu zajedno sa ciljem izvravanja zadataka neke konkretne aplikacije.
Razumevanje i savladavanje ovog koncepta je jako bitno budui da e biti primenjivan prilikom izvravanja brojnih ugraenih
aplikacija, poput: Google Chrome, Telefon, Google Maps, Kontakti itd.

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 2
UPOZNAVANJE KONCEPTA AKTIVNOST

Klasa koja implementira aktivnosti nasleuje Activity klasu.

Da bi koncept aktivnost to bolje bio predstavljen, neophodno je prvo predstaviti JAVA klasu koja nasleuje osnovnu klasu Activity.
Neka to bude klasa MainActivity.java.

package com.metropolitan.prvaandroidapp;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 3
ANDROIDMANIFEST DATOTEKA

Svaka aktivnost aplikacije mora da bude deklarisana u AndroidManifest.xml datoteci.

Instrukcijom Sledi kod razmatrane AndroidManifest.xml datoteke.


setContentView(R.layout.main) navedena
<?xml version="1.0" encoding="utf-8"?>
klasa vri uitavanje korisnikog interfejsa <manifest
pomou xml datoteke activity_main.xml xmlns:android="http://schemas.android.com/apk/res/android"
koja je smetena u folderu res/layout. package="com.metropolitan.prvaandroidapp"
android:versionCode="1"
Prethodno je bilo posebno govora o ovoj android:versionName="1.0" >
datoteci i pokazano je kako se pomou <uses-sdk
nje mogu dodavati komponente android:minSdkVersion="8"
android:targetSdkVersion="21" />
korisnikog interfejsa. Dalje, svaka <application
aktivnost, koja je prisutna u aplikaciji, android:allowBackup="true"
mora biti istaknuta u AndroidManifest.xml android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
datoteci. Aktivnosti su grupisane u okviru android:theme="@style/AppTheme" >
xml tagova <activity ..> </activity>. <activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 4
IVOTNI CIKLUS AKTIVNOSTI

ivotni ciklus prati seriju aktivnosti od iniciranja do uklanjanja iz memorije.

ivotni ciklus aktivnosti odreen je serijom dogaaja definisanih klasom Activity koju nasleuju klase aktivnosti Android aplikacija. Od
velike vanosti je razumevanje sledeih dogaaja:
onCreate() Poziva se prilikom prvog definisanja aktivnosti;
onStart()- Poziva se kada aktivnost postane vidljiva korisniku;
onResume() Poziva se kada korisnik zapone interakciju;
onStop() Poziva se kada aktivnost vie nije vidljiva korisniku;
onDestroy() Poziva se pre uklanjanja aktivnosti;
onRestart() Nakon zaustavljanja aktivnosti poziva se za njeno ponovno pokretanje.
Po osnovnim podeavanjima, kreirana aktivnost sadri onCreate() dogaaj koji pomae da se prikau korisniku elementi korisnikog
interfejsa.

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 5
IVOTNI CIKLUS AKTIVNOSTI - NASTAVAK

Aktivnosti se pakuju na stek aktivnosti.

Aktivnostima u sistemu se upravlja kao Sledeom slikom prikazan je ivotni ciklus aktivnosti (izvor:
stekom aktivnosti. Svaka nova aktivnost http://developer.android.com).
se dodaje na vrh steka. Sve prethodne
aktivnosti se nalaze ispod u steku i ostaju
neaktivne sve dok tekua aktivnost ne
napusti stek.
Aktivnost se javlja u etiri osnovna oblika:
Ako je aktivnost u prvom planu na
ekranu, ima status active ili running;
Ako je aktivnost izgubila fokus, a
vidljiva je i dalje, pauzirana je;
Ako je aktivnost u potpunosti u senci
druge aktivnosti, zaustavljena je;
Ako je aktivnost pauzirana ili
zaustavljena, sistem moe da je
eliminie iz memorije. Za naredno
angaovanje aktivnosti neophodno je
njeno restartovanje.

Slika-1 ivotni ciklus aktivnosti

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 6
DODAVANJE AKTIVNOSTI U ACTIVITY DATOTEKU

Aktivnosti su realizovane specifinim metodama implementiranim u tano odreenu JAVA


datoteku.
Najbolji nain za razumevanje funkcionisanja aktivnosti jeste Sledi nastavak koda:
uvoenje konkretnog primera:
Kreirati nov Android projekat sa nazivom
AktivnostiDemonstracija;
U JAVA datoteku aktivnosti ugraditi sledei podvueni kod:

Slika-2b Dodavanje aktivnosti u Activity datoteku-nastavak

Slika-2a Dodavanje aktivnosti u Activity datoteku

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 7
PRAENJE IVOTNOG CIKLUSA AKTIVNOSTI

Sve izvrene aktivnosti su evidentirane u LogCat prozoru.

U nastavku, neophodno je da se pritiskom na ctrl+s snimi izmenjena datoteka, a zatim pomou F11 izvri debagovanje na
pokrenutom AVD emulatoru. Prvo to treba proveriti jeste LogCat prozor gde se moe primetiti evidencija pokrenutih aktivnosti
(sledea slika).

Slika-3 Evidentiranje aktivnosti u LogCat prozoru

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 8
UPOTREBA STILOVA I TEMA

Inicijalna podeavanja aktivnosti mogu da se prilagode i promene primenom stilova i tema.

Poetnim podeavanjima, aktivnosti se predaje celokupan ekran. Primenom tema mogue je promeniti poetna podeavanja. Tako,
ako se eli da se aktivnost prikae kao npr. iskaui prozor kojim se obavlja dijalog izmeu sistema i korisnika, primenom teme za
dijalog u tagu <Activity > datoteke AndroidManifest.xml poetna podeavanja se zamenjuju eljenim. Sledeim kodom je prikazan
deo AndroidManifest.xml datoteke u kojem su izvrene naznaene korekcije.

Slika-7 Dodavanje teme u AndroidManifest.xml

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 9
PRIKAZIVANJE OKVIRA DIJALOGA KORIENJEM AKTIVNOSTI

Potvrda interakcije sa korisnikom prikazuje se okvirom za dijalog.

U realnim situacijama veoma esto je neophodno prikazati okvir za dijalog koji u sebi nosi potvrdu interakcije sa korisnikom. U tom
sluaju je neophodno izvriti predefinisanje zatiene metode onCreateDialog() definisane u osnovnoj klasi aktivnosti. Za ilustraciju
bie iskorien sledei primer.
Otvoriti Eclipse IDE, kreirati u com.metropolitan paketu novi projekat sa nazivom Dialog i proiriti main.xml datoteku sledeim kodom:

Slika-8 Podeavanje main.xml datoteke

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 10
PRIKAZIVANJE OKVIRA DIJALOGA KORIENJEM AKTIVNOSTI - NASTAVAK

Da bi bio prokazan okvir za dijalog neophodno je implementirati onCreateDialog() metodu u klasi


Activity.
U JAVA datoteku, koja je po inicijalnim podeavanjima nazvana U nastavku bie programirana metoda onCreateDialog() klase
DialogActivity.java, predefinisaemo novim kodom prikazanim u DialogActivity:
sledeem izlaganju:

Slika-9a Ukljuivanje neophodnih paketa u primer


Slika-9b Programiranje metode onCreateDialog()

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 11
PRIKAZIVANJE OKVIRA DIJALOGA KORIENJEM AKTIVNOSTI JO KODA

Neophodno je definisati akcije koje se realizuju klikovima na definisanu dugmad.

Programski kod nastavak: Konano onCreate() metoda:

Slika-9c Programiranje onCreate() metode

Slika-9d Programiranje metode onCreate()

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 12
PRIKAZIVANJE OKVIRA DIJALOGA KORIENJEM AKTIVNOSTI KRAJ I
DEMONSTRACIJA
Klikom na dugmad bie prikazane sve akcije definisane metodom.

Kraj programskog koda: Klikom na F11 vri se debagovanje programa i pokretanje u


emulatoru.

Slika-9e Programiranje metode onCreate()

Slika-10 Demonstracija uraenog primera

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 13
FUNKCIONISANJE DIJALOG OKVIRA

Metoda onCreateDialog() je reakcija na kreiranje okvira za dijalog kojim upravlja odgovarajua


aktivnost.
U prethodni primer ugraena su tri veoma esta naina korienja okvira za dijalog. Da bi, uopte, okvir za dijalog bio prikazan,
neophodno je ispuniti sledee uslove:
Implementirana metoda onCreateDialog() u klasi aktivnosti;
Pozivanje onCreateDialog() metode se deava nakon izvravanja metode showDialog() koja prihvata celobrojni argument koji
odgovara konkretnom okviru za dijalog;
Da bi okvir za dijalog bio kreiran, neophodno je koristiti Builder konstruktor AlertDialog klase;

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 14
PRIKAZIVANJE OKVIRA ZA DIJALOG PROGRESA

Dijalog progresa je najee koriena komponenta korisnikog interfejsa u Android


aplikacijama.
Kada aplikacija ukazuje na zadatke koji se izvravaju relativno Da bi okvir za dijalog progresa bio kreiran neophodno je kreiranje
dugo, najee dolazi do prikazivanja okvira za dijalog progresa objekta klase ProgressDialog i izvravanje njene metode show().
koji korisniku nosi odgovarajuu poruku Simulacija zadatka koji se due izvrava implementirana je
metodom run().

Slika-12 Konstruktor objekta klase ProgressDialog i metoda run()

Slika-11 Dijalog okvira progresa

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 15
KORIENJE NAMERA ZA POVEZIVANJE AKTIVNOSTI

U Android operativnom sistemu namere imaju ulogu navigatora izmeu pojedinanih aktivnosti.

Svaka Android aplikacija moe biti izgraena od jedne ili vie aktivnosti. Ukoliko aplikacija sadri vie aktivnosti neophodno je
obezbediti mehanizme kojima se vri navigacija sa jedne aktivnosti na drugu. Taj zadatak u Android aplikacijama realizovan je
pomou namera. Za predstavljanje i razumevanje ovog koncepta bie uveden novi primer:
1. Kreirati nov projekat pod nazivom KoriscenjeNamera
2. Desnim klikom na folder src i izborom opcija new class kreirati nove dve klase pod nazivima: DrugaAktivnost i TrecaAktivnost.
3. U AndroidManifest.xml datoteci uraditi sledee dopune:

Slika-13 Dodavanje novih aktivnosti u AndroidManifest.xml

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 16
KREIRANJE VLASTITIH XML DATOTEKA ZA AKTIVNOSTI

Svaka aktivnost mora da ima svoju xml datoteku.

U res/layout folderu neophodno je kreirati nove dve xml datoteke pod nazivima: DrugaAktivnost.xml i TrecaAktivnost.xml. Njihov kod
odgovara modifikaciji main.xml datoteke na sledei nain:

Slika-14 Kreiranje vlastitih xml datoteka za aktivnosti

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 17
MODIFIKOVANJE JAVA DATOTEKA AKTIVNOSTI

Za svaku aktivnost neophodno je definisati vlastitu onCreate() metodu.

U datoteke DrugaAktivnost.java i TrecaAktivnost.java dodati linije programskog koda na nain prikazan sledeom slikom:

Slika-15 Programiranje JAVA datoteka aktivnosti

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 18
MODIFIKACIJA MAIN.XML I KORISCENJENAMERA.JAVA DATOTEKA

Na kraju je neophodno modifikovati i glavne datoteke

Da bi bilo mogue potpuno sagledavanje angaovanja vie aktivnosti u jednoj Android aplikaciji neophodno je jo modifikovati
datoteke main.xml i KoriscenjeNamera.java na sledei nain:

Slika-16 Korekcije glavnih JAVA i xml datoteka

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 19
DEMONSTRACIJA ANGAOVANJA VIE AKTIVNOSTI U APLIKACIJI

Aktivnost je definisana odgovarajuom komponentom korisnikog interfejsa i klasom.

Kao to je naglaeno aktivnost je definisana odgovarajuom komponentom korisnikog interfejsa i klasom pa ukoliko je neophodno
dodati novu aktivnost u projekat, ove dve komponente moraju biti ukljuene. Kao to je ve pomenuto, aktivnost se dodaje u
aplikaciju navoenjem odgovarajueg koda u AndroidManifest.xml. U konkretnom primeru taj kod nosi sledee informacije:
1. Oznake novih aktivnosti su DrugaAktivnost i TrecaAktivnost;
2. Naziv filtera za nove aktivnosti je com.metropolitan.DrugaAktivnost i com.metropolitan.TrecaAktivnost;
3. Kategorija za filter namera je android.intent.category.DEFAULT . Ova kategorija je neophodna da bi neka aktivnost mogla da
bude pokrenuta drugom aktivnou pomou metode startActivity();
4. Klikom na taster, metodom startActivity() pokree se nova aktivnost npr DrugaAktivnost kreiranjem objekta klase Intent i
prosleivanjem filtera namera na sledei nain:
public void onClick(View view) {
startActivity (new Intent(" com.metropolitan.DrugaAktivnost "));
}

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 20
DEMONSTRACIJA ANGAOVANJA VIE AKTIVNOSTI U APLIKACIJI -
NASTAVAK
Pokretanjem emulatora testira se program za upravljanje aktivnostima.

Pokretanjem programa otvara se poetni ekran sa porukom koja Klikom na dugme pokree se druga aktivnost koja zahteva akcije
ukazuje na nain pokretanja druge aktivnosti. kao na sledeoj slici.

Slika-18 Aktivnost DrugaAktivnost

Slika-17 Poetni ekran aplikacije

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 21
IZBEGAVANJE SUDARANJA FILTERA NAMERE

Ukoliko dve aktivnosti imaju isti naziv filtera Android prikazuje selekciju aktivnosti.

Ukoliko se pogleda u kod AndroidManifest.xml datoteke koji ukazuje na drugu i trecu aktivnost mogue je uoiti da obe aktivnosti
koriste isti filter:
<intent-filter >
<action android:name=com.metropilitan.DrugaAktivnost" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Izvravanjem metode startActivity() Android operativni sistem e pokazati selekciju aktivnosti kao na sledeoj slici.

Slika-19 Selekcija
aktivnosti

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 22
PRELAZAK SA JEDNE AKTIVNOSTI NA DRUGU

Metoda startActivity() inicira drugu aktivnost.

Izvravanjem metode startActivity() i izborom tree aktivnosti u Android selekciji aktivnosti dolazi do izvravanja navedene aktivnosti.
Korigovanjem koda u AndroidManifest.xml datoteci, gde e kao filter namera biti uveden com.metropolitan.TrecaAktivnost, izbegava
se navedena selekcija i dolazi do direktnog izvravanja tree aktivnosti.

Slika-20 Aktivnost
TrecaAktivnost

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 23
VRAANJE REZULTATA IZ INICIRANE AKTIVNOSTI

Metoda startActivity() inicira drugu aktivnost ali ne vraa rezultat u trenutnu aktivnost.

Metoda startActivity() inicira drugu aktivnost ali ne vraa rezultat u trenutnu aktivnost. Ako se obrati panja na primer, mogue je
uoiti da se u drugoj aktivnosti zahteva unoenje korisnikih podataka. Klikom na odgovarajue dugme, ovi podaci trebalo bi da se
proslede u poetnu aktivnost. Za navedenu akciju koristi se metoda startActivityForResult(), a to je prikazano slikom18. Neophodno
je navesti i sledee:
1. Da bi aktivnost bila inicirana i rezultati izvravanja bili prikazani, neophodno je upotrebiti navedenu metodu na sledei nain:
startActivityForResult (new Intent(com.metropolitan.DrugaAktivnost"), request_Code);
2. Da bi aktivnost vratila vrednost u polaznu aktivnost, neophodno je koristiti Intent objekat koji koristi metodu setData() za vraanje
podataka nazad.
3. Metoda setResult() definie kod (RESULT_OK ili RESULT_CANCELLED) i Intent objekat koji se vraaju u polaznu aktivnost.
4. Metoda finish() prekida tekuu aktivnost i vraa kontrolu na polaznu aktivnost.
5. Polazna aktivnost mora da poseduje metodu onActivityResult() koja se izvrava kada se vraa vrednost iz inicirane aktivnosti.

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 24
UPOZNAVANJE KONCEPTA FRAGMENT

Fragmenti su jo jedna forma aktivnosti.

Fragmenti su detalji aktivnosti koji Fragmenti su ukljueni u Android API od verzije Honeycomb (API 11).
omoguavaju viemodularni dizajn
Fragmenti se kreiraju kroz nasleivanje klase Fragment, a dodaju se u aktivnost
aktivnosti. Fragment moe da se tumai
uvoenjem taga <Fragment . /> u xml datoteku aktivnosti. Sledeom slikom
kao podaktivnost.
prikazano je kako dva UI modula mogu biti kombinovana kao jedna aktivnost na tablet
Za fragmente vai sledee: dizajnu ili kao odvojene na dizajnu mobilnog telefona. Aktivnost je u direktnoj vezi sa
veliinom ekrana.
Svaki fragment ima vlastiti izgled,
ponaanje i ivotni ciklus;
Fragmente je mogue dodavati i brisati
iz aktivnosti dok je ona aktivna;
Mogue je kombinovati vie
fragmenata u jednu aktivnost sa ciljem
postizanja sloenog korisnikog
interfejsa;
ivotni ciklus fragmenta je u direktnoj
vezi sa ivotnim ciklusom aktivnosti u
koju je ugraen fragment;
Fragment moe da implementira
ponaanje koje ne ukljuuje
komponentu korisnikog interfejsa;
Slika-1 Fragmenti i veliina ekrana (izvor tutorialspoint.com)

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 25
IVOTNI CIKLUS FRAGMENATA

Fragmenti, kao i aktivnosti, imaju sopstveni ivotni ciklus.

Android fragmenti imaju vlastite ivotne cikluse veoma slino kao Najvei broj stanja fragmenata identian je stanjima aktivnosti.
i aktivnosti. Sledeom slikom prikazane su razliite faze ivotnog Ipak, postoji nekoliko stanja karakteristinih iskljuivo za
ciklusa fragmenta. fragmente:
onAttached() Izvrava se kada se fragment povezuje sa
aktivnou;
onCreateView() Izvrava se kada se definie pogled na
fragment;
onActivityCreated() Izvrava se kada se vrati rezultat
onCreate() metode aktivnosti.
onDestroyView() Izvrava se kada se ukloni pogled na
fragment;
onDetach() Izvrava se kada se fragment ukloni iz odreene
aktivnosti.
Slika-2 ivotni ciklus fragmenta (izvor tutorialspoint.com)

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 26
UPOTREBA FRAGMENATA

Kreiranje fragmenata prati nekoliko obaveznih koraka tokom kreiranja aplikacije.

Kreiranje fragmenata tee kroz nekoliko jednostavnih koraka:


1. Prvo je neophodno odluiti koliko fragmenata e biti ukljueno u aktivnost;
2. Zatim, u zavisnosti od broja fragmenata, kreiraju se klase koje nasleuju klasu Fragment;
3. Posebno, za svaki fragment, neophodno je u xml fajlu definisati izglede koje e fragmenti imati.
4. Konano, fajl aktivnosti e morati da bude modifikovan tako da definie aktuelnu logiku angaovanja fragmenata.

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 27
TIPOVI FRAGMENATA

Fragmenti su podeljeni u tri nivoa.

U osnovi fragmenti su podeljeni u tri nivoa i to:


1. Fragmenti jednog okvira (single frame) Ovakvi fragmenti imaju najeu upotrebu kod ureaja sa malim ekranima, poput
mobilnih telefona.
2. Lista fragmenata Fragmenti su poreani u posebnu listu pogleda;
3. Transakcije fragmenata Primenom transakcija fragmenata mogue je pomerati jedan fragment ka drugom.

Slika-3 Tipovi fragmenata

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 28
PRIMER KORIENJA FRAGMENATA

Na novom Android projektu bie demonstrirana upotreba fragmenata.

Sledeom vebom bie demonstrirana upotreba fragmenata:


1. Koristei Eclipse IDE kreirati novi projekat i nazvati ga Fragmenti.
2. Modifikovati datoteku main.xml i kreirati dve nove fragment1.xml i fragment2.xml;
3. Kreirati dve klase Fragment1.java i Fragment2.java;
4. Prevesti program i pokrenuti emulator za testiranje.
5. Testirati funkcionalnost programa za prezentaciju fragmenata

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 29
PRIMER KORIENJA FRAGMENATA XML DATOTEKE

Program sadri glavnu xml datoteku i xml datoteke fragmenata.

U main.xml datoteci dodati programski kod kao to je prikazano prvom kolonom sledee slike, a zatim kreirati datoteke fragment1.xml
i fragment2.xml na nain prikazan drugom i treom kolonom slike. Sve datotene moraju da se nalaze u res/layout folderu.

Slika-4 xml datoteke projekta

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 30
PRIMER KORIENJA FRAGMENATA JAVA DATOTEKE

Neophodno je dodati i dve java datoteke za fragmente.

U paketu, koji je nazvan com.matropolitan.Fragmenti, a u folderu src kreirati dve datoteke koje sadre JAVA klase fragmenata.
Datoteke e biti nazvane Fragment1.java i Fragment2.java. Kod klasa prikazan je sledeom slikom.

Slika-5 JAVA klase fragmenata

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 31
PRIMER KORIENJA FRAGMENATA TESTIRANJE KODA

Prevoenjem program i pokretanjem emulatora testira se kreirana aplikacija.

Klikom na taster F11 aplikacija se debaguje u Android emulatoru nakon ega prikazuje na istom ekranu dve aktivnosti. Interakcijom
korisnika sa interfejsom aplikacija demonstrira vlastitu funkcionalnost (sledea slika).

Slika-6 Demonstracija fragmenata

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 32
NAIN FUNKCIONISANJA FRAGMENATA

Fragment funkcionie slino kao i aktivnost, definisan je odgovarajuom JAVA klasom, a uitava
interfejs iz xml datoteke.
Fragment funkcionie slino kao i aktivnost, definisan je odgovarajuom JAVA klasom, a uitava interfejs iz xml datoteke. JAVA klasa
fragmenta nasleuje baznu klasu Fragment:
public class Fragment1 extends Fragment {..}
Pored bazne klase, fragment moe da nasleuje i klase koje su izvedene iz klase Fragment poput: DialogFragment, ListFragment,
PreferenceFragment i sl.
Metodom onCreateView() vraa se View objekat, a to je definisano sledeim kodom:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate (R.layout.fragment2, container, false);
}
Korienjem objekta LayoutInflater definisan je korisniki interfejs prikazan pomou xml datoteke. Argument container ukazuje na
osnovni ViewGroup element, a to je aktivnost koja se ugrauje u fragment. Argument savedInstanceState omoguava vraanje
prethodno zapamenog stanja fragmenta.

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 33
IZVRAVANJE UGRAENIH APLIKACIJA PRIMENOM NAMERA

Korienjem Intent objekata mogue je iskoristiti ugraene aplikacije umesto da kreiramo vlastite
za postizanje odreene svrhe programa.
Sve to je do sada prikazano oslanjalo se na kreiranje i izvravanje aktivnosti vlastitih aplikacija. Jedan od najvanijih segmenata
Android programiranja jeste mogunost upotrebe aktivnosti koje su definisane u drugim aplikacijama. Svaka aplikacija, koja se kreira,
ima mogunost poziva brojnih aplikacija koje su dostupne na konkretnom mobilnom ureaju. U konkretnom sluaju, ukoliko aplikacija
zahteva uitavanje odreene web stranice, dovoljno je iskoristiti Intent objekat sa ciljem upotrebe postojeeg web itaa, umesto
kreiranja novog.
U daljem izlaganju, zadatak e biti na uvoenju konkretnog primera za demonstraciju izvravanja izvesnih ugraenih aplikacija koje
se u velikoj meri nalaze instalirane na svakom mobilnom ureaju.

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 34
PRIMER UPOTREBE INTENT OBJEKATA

Konstuktorom Intent objekta definie se akcija koju taj objekat treba da obavi.

Zadatak:
1. Koristei Eclipse IDE kreirati novi Android projekat sa nazivom Namere;
2. Na odreeni nain izvriti modifikacije u main.xml datoteci dodati dugmie koji e inicirati konkretne akcije nad ugraenim
aplikacijama;
3. Modifikovati JAVA klasu aktivnosti tako to e svaka akcija biti pokrivena odgovarajuim Intent objektom;
4. Prevesti program i pokrenuti da na Android emulatoru.

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 35
KOREKCIJE MAIN.XML DATOTEKE

U main.xml datoteci neophodno je dodati kontrole korisnikog interfejsa koje e inicirati


pokretanje ugraenih aplikacija.
U main.xml datoteku bie integrisana tri dugmeta. Prvim e biti pokrenut web ita, drugo e inicirati telefonski poziv, a tree e
zahtevati pozivanje Google mapa. Kod koji to omoguava prikazan je sledeom slikom.

Slika-1 main.xml datoteka za demonstraciju poziva


ugraenih aplikacija

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 36
JAVA DATOTEKE SA INTENT OBJEKTIMA

U JAVA datotekama definisani su Intent objekti za omoguavanje upotrebe ugraenih aplikacija.

Prva akcija podrazumeva kreiranje glavne klase aktivnosti. Potom je neophodno definisati i klasu
aktivnosti za web ita.

Slika-3 Klasa aktivnosti web itaa

Slika-2 Glavna klasa ativnosti

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 37
ANDROIDMANIFEST.XML DATOTEKA

Za svaku Android aplikaciju mora se voditi rauna o AndroidManifest.xml datoteci

Sledei zadatak, vezan za tekui primer, jeste isticanje AndroidManifest.xml datoteke. Aktuelna datoteka prikazana je kodom sa
sledee slike.

Slika-4 AndroidManifest.xml datoteka primera

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 38
DEMONSTRACIJA FUNKCIONALNOSTI PRIMERA

Klikom na F11 vri se prevoenje i pokretanje primera u emulatoru.

Pokretanjem programa pojavljuje se poetna stranica kao na Izborom prve opcije otvara se ugraenja aplikacija web itaa sa
sledeoj slici. unapred definisanom stranicom.

Slika-6 Angaovanje ugraene


Slika-5 Poetni interfejs aplikacije aplikacije web ita

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 39
DEMONSTRACIJA FUNKCIONALNOSTI PRIMERA - NASTAVAK

Aplikacije poput Google mapa i telefona takoe mogu biti pozivane.

Izborom opcije Pozovi otvara se aplikacija za obavljanje Izborom opcije Prikai mapu otvara se web ita koji pokree
telefonskih poziva. Google mape sa prezentacijom definisane lokacije.

Slika-7 Pozivanje definisanog Slika-8 Pozivanje Google mapa


broja telefona

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 40
NAIN FUNKCIONISANJA PROGRAMA ZA POZIVANJE UGRAENIH
APLIKACIJA
Namere za pozivanje aplikacija ine par: akcija i podaci.

U primeru je demonstrirano korienje Intent klase za pozivanje Akcija i podaci su vrednosti kojima je definisana operacija koja
aplikacija koje su sastavni deo Android operativnog sistema treba da se izvri. Kao to je pokazano u primeru, da bi neki
skoro svakog mobilnog ureaja. telefonski broj bio pozvan neophodno je koristiti par
ACTION_DIAL/ tel: +381692030885. Da bi neki kontakt bio
U Android operativnom sistemu namere kojima se pozivaju
izabran iz liste koristi se par ACTION_PICK/content://contacts.
ugraene aplikacije imaju formu para: akcija i podaci. Akcijom je
definisano kako se neto izvrava npr. prikazivanje odreenog Konkretno, u primeru je za prvu komponentu korisnikog
sadraja, a podaci ukazuju detalje na koje se utie npr. broj interfejsa kreiran Intent objekat pri emu su u njegov konstruktor
telefona u bazi kontakata i specificirani su kao odreeni Uri prosleena dva podatka koja odgovaraju akciji i podacima:
objekti.
Intent i = new
Ovo su primeri najee korienih akcija:
Intent("android.intent.action.VIEW");
ACTION_VIEW,
i.setData(Uri.parse("http://www.metropolitan.edu.rs/"));
ACTION_DIAL;
startActivity(i);
ACTION_PICK, itd.
Navedena aktivnost je ponovljena i za ostale komponente
U primeru su definisani sledei podaci (Uri objekti): korisnikog interfejsa kojima se pozivaju ugraene aplikacije.
www.metropolitam.edu.rs;
tel: +381692030885;
geo:44.8305354,20.4550463, itd.

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 41
INTENT OBJEKAT

Intent objekat se kreira prilikom pozivanja aktivnosti ugraenih aplikacija.

Do sada je naueno da se pozivanje neke druge aktivnosti Pored akcije i tipa podataka, Intent objekat, a to je pokazano u
obavlja tako to se njene akcije prosleuju u konstruktor Intent primeru, moe da specificira i kategoriju kao skup aktivnosti
objekta: grupisanih u logike jedinice koje Android koristi za filtriranje.
Intent i = new (Intent(android.content.Intent.ACTION_DIAL, Intent objekat moe da sadri sledee informacije:
Uri.parse("tel:+381692030885")); Action;
startActivity(i); Data;
Type;
Meutim, podatke je mogue prosledeiti Intent objektu i Category.
upotrebom metode setData() na sledei nain:
Intent i = new Intent("android.intent.action.VIEW");
i.setData(Uri.parse("http://www.metropolitan.edu.rs/"));
startActivity(i);
Na ovaj nain Android operativnom sistemu je sugerisano da se
nastoji pristupiti web stranici koja se nalazi na konkretnoj URL
adresi.

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 42
KORIENJE INTENT FILTERA NA UGRAENE APLIKACIJE

Intent filteri, kojima jedna aplikacija inicira drugu, definisani su AndroidManifest.xml datoteci.

U primeru je detaljno pokazano kako jedna aktivnost inicira drugu primenom Intent objekta. Da bi bilo mogue aktiviranje jedne
aktivnosti drugom, neophodno je specificirati akciju i kategoriju u okviru xml taga <intent-filter> </intent-filter> datoteke
AndroidManifest.xml. Navedeno je mogue prikazati sledeim programskim kodom:
<intent-filter>
<action android:name="com.metropolitan.Citac" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>

29.07.2015 UNIVERZITET METROPOLITAN, Beograd / Kopiranje i umnoavanje nije dozvoljeno / Sva prava su zadrana. V1.20 43

You might also like