
Naučte sa vyvíjať aplikácie pre Android za 14 dní – aplikácia s dvomi aktivitami
V budúcom pokračovaní už budeme spúšťať a ladiť aplikáciu na reálnom zariadení, pričom ukážeme postup pre všetky obidve varianty, čiže smartfóny s podporou služieb Google a taktiež aj nové smartfóny Huawei bez podpory týchto služieb. Aby však bolo čo spúšťať a ladiť najskôr v tomto dieli vytvorme aplikáciu, ktorá na rozdiel od doterajších cvičných projektov už bude ako tak zmysluplná a budú sa v nej spracovávať nejaké údaje.
Pripomenieme, čo je aktivita: Aktivita je hlavná trieda, ktorá sa používateľom zobrazí po spustení aplikácie. Aplikácia môže pozostávať z viacerých aktivít, ktoré si navzájom odovzdávajú údaje. Aktivity umožňujú používateľom cez grafické rozhranie (GUI) prijímať informácie od aplikácie a ovládať ju. Cez aktivitu sa spravidla implementuje viac, alebo menej komplexná čiastková úloha, ktorú má používateľ realizovať, napríklad vyplniť formulár, nastaviť parametre, vybrať si položku zo zoznamu a podobne. Trieda Activity je predurčená k tomu, aby zobrazovala používateľské rozhranie a zachytávala interakcie používateľa cez toto rozhranie. Aktivita by mala byť navrhnutá tak, aby umožnila používateľovi sústrediť sa na jednu vec, ktorú momentálne potrebuje realizovať, napríklad napísať a poslať textovú správu, zadať kontaktné údaje a podobne.
Námetom aplikácie bude výpočet indexu telesnej hmotnosti BMI na základe zadanej výšky a hmotnosti osoby. Vzorec na výpočet je
BMI hodnota = Hmotnosť v kg : (výška v m)2
Vytvorte projekt s hlavnou aktivitou typu EmptyActivity. Na ploche obrazovky hlavnej aktivity budú ovládacie prvky na zadanie údajov. Výsledky sa zobrazia na obrazovke druhej aktivity.
Začnime vytvárať používateľské rozhranie hlavnej aktivity, na ktorej bude používateľ zadávať údajeNa zobrazenie popisov polí pre zadanie textu sú v príklade použité prvky typu TextView. Okrem typu hodnoty naznačíme používateľovi aj to, v akých jednotkách aplikácia príslušnú hodnotu očakáva Používateľ bude interagovať s dvoma prvkami typu EditText na zadanie výšky a váhy a zadanie potvrdí tlačidlom, teda prvkom typu Button.
Pre rozmiestnenie prvkov v súbore activity_main využijeme vizuálny kontejner LinearLayout tentokrát s vertikálnym rozmiestnením prvkov. Nakoľko bude používateľ zadávať len čísla, nakonfigurujeme prvok EditText tak, aby bolo prostredníctvom neho možné zadať len textový reťazec pozostávajúci z číslic. Zariadi to parameter android:inputType="number"
Kompletný návrhový kód v súbore activity_main.xml bude:
Tento príklad už považujeme za prvú reálnu aplikáciu, preto nebudeme vkladať textové reťazce do priamo prvkov typu TextView, ale do resourceov, teda do súboru /res/values/strings.xml
Zobrazenie textových reťazcov vo vývojovom prostredí. Vľavo translate editor, vpravo textové reťazce aplikácie ako XML dokument
![]() |
![]() |
Zatiaľ máme podčiarknutú deklarovanú metódu na obsluhu udalosti zatlačenia tlačidla, pretože ju nemáme v Java kóde hlavnej aktivity
Aplikačná logika
Obsluha udalosti zatlačenia tlačidla sa odohráva v metóde buttonClicked. V kóde metódy je najskôr potrebné zistiť a skontrolovať zadané údaje. V našom prípade je táto kontrola na prvý pohľad duplicitná, nakoľko používateľ môže zadávať len číselné hodnoty. Avšak používateľ je nevyspytateľný môže napríklad zadať záporné číslo, alebo inú problematickú hodnotu, trebárs nulovú výšku, ktorá následne spôsobí delenie nulou... Preto aplikácia za platný údaj považuje výšku nad 50 cm.
V reálnej aplikácii by ste používateľovi oznámili viac detailov, prečo je ním zadaný údaj neplatný. V tejto aplikácii oznámime len ktorý údaj je neplatný, zadaný údaj sa vynuluje a aplikácia naň prenesie fokus, čiže používateľ môže začať zadávať údaj nanovo.
Používateľ de facto zadáva textový reťazec, ktorý je potrebné prekonvertovať na číslo. To je úlohou metódy dajCislo. Na zistenie inštancie prvkov EditView je použití metóda findViewById(int id). Parameter je identifikátor požadovaného prvku. Text následne prekonvertujeme na celé číslo. Ak sa konverzia nepodarí, vráti metóda hodnotu -1 a tá sa následne v metóde buttonClicked identifikuje ako nesprávna a vygeneruje sa oznam
Pre komunikáciu medzi entitami aplikácií sa využíva Intent. Intent (v preklade zámer) je trieda, ktorá obsahuje runtime väzby medzi jednotlivými zložkami, napríklad aktivitami a argumenty na odovzdanie parametrov. Intent sa odovzdá operačnému systému a ten sa snaží zariadiť, aby bol zámer splnený. V prípade ak je k dispozícii viac aktivít schopných splniť príslušný zámer, systém umožní voľbu aktivity používateľovi. Metóda putExtra preberá dva argumenty textový reťazec s unikátnym identifikátorom objektu na odovzdanie parametra a samotný objekt, ktorý môže tvoriť elementárna hodnota alebo vhodný serializovateľný objekt. V našom prípade budeme odovzdávať hodnotu BMI prostredníctvom premennej typu float, nakoľko BMI je desatinné číslo.
Kompletný zdrojový kód triedy hlavnej aktivity aplikácie, teda tej, kde sa zadávajú a spracovávajú údaje bude:
Vytvorenie novej aktivity
Následne je potrebné vytvoriť novú aktivitu pre výpis vypočítaného BMI. Pre vytvorenie aktivity, ktorá obsahuje aj XML definičný súbor používateľského rozhrania môžete s výhodou použiť sprievodcu vytvorenia aktivity. Spustíte ho cez menu New -> Activity -> Empty Activity. Na vytvorenie novej aktivity je k dispozícii široká ponuka šablón
Aktivitu môžete pomenovať napríklad VypisBmiActivity. Od názvu aktivity sa odvodí názov layoutu, teda súboru s kódom jej používateľského rozhrania. Aktivita bude potrebovať tento definičný súbor v zložke res, preto sa uistite, či je označená voľba Generate Layout File.
Zdrojový kód triedy novej aktivity VypocetBmiActivity.java nájdete v zložke src, vo vnorenej zložke com.example.nazovprojketu.
Súbor pre návrh používateľského rozhrania activity_vypis_bmi.xml vytvorený sprievodcom v tejto aplikácii nevyužijeme. Prvky na výpis vytvoríme ako objekty v Java kóde
Informácie o vytvorenej aktivite budú pridané aj do aplikačného manifestu v súbore AndroidManifest.xml, ktorý nájdete v zložke app -> manifests
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
Metóda Activity.startActivity odovzdá systému príslušný Intent a oznámi mu, že má spustiť nejakú Activity. Tým sa dejstvo v hlavnej aktivite končí a na popredie vystúpi aktivita VypisBmiActivity
Začnime teda tvoriť kód triedy novej aktivity. V hlavnej aktivite sme v metóde vypocetBMI() odkazovali na textový reťazec s unikátnym identifikátorom objektu na odovzdanie parametra BMI druhej aktivite. Pripomeňme si kód tejto metódy:
Preto musíme v kóde aktivity VypisBmiActivity tento konštantný reťazec vytvoriť
V metóde onCreate preberie aktivita Intent vytvorený hlavnou aktivitou. Pomocou metódy getFloatExtra získame hodnotu BMI. Druhý parameter obsahuje implicitnú hodnotu ak by sa vlastnosť s daným kľúčom v intente nenachádzala.
V metóde zobrazBMI zobrazí aktivita hodnotu BMI ako súčasť textového reťazca. Všimnite si v súbore /res/values/strings.xml reťazec obsahujúci formátovaciu sekvenciu %1$.2f ktorá predpisuje, že prvý parameter sa zobrazí ako desatinné číslo (f - float) s presnosťou na dve desatinné miesta (.2).
Kompletný zdrojový kód triedy novej aktivity je
Teraz môžete aplikáciu vyskúšať. Vľavo je hlavná aktivita zobrazená po spustení aplikácie určená na zadanie parametrov na výpočet BMI. Vpravo je aktivita, ktorá vypíše vypočítané BMI
![]() |
![]() |
Samozrejme aktivitu na výpis môžete vylepšiť, namiesto suchého konštatovania hodnoty môžete dať komentár, či sa jedná o správnu hmotnosť, prípadne obezitu, zobraziť hodnotu na grafe a podobne
Ak si to zrekapitulujeme, po siedmych častiach seriálu viete vytvoriť zmysluplnú aj keď zatiaľ nie príliš komplexnú aplikáciu, poznáte filozofiu dizajnu a viete z akých súborov pozostáva projekt. V budúcom pokračovaní ukážeme ako aplikáciu nahrať do smartfónu, tam ju spustiť a ladiť.
Prehľad dielov seriálu
1 deň – Prvá aplikácia
2 deň – Možnosti emulátorov
3 deň - Zorientujte sa v projekte aplikácie
4 deň – Princípy dizajnu a škálovania
5 deň – Uporiadanie prvkov používateľského rozhrania
6 deň – Obsluha udalostí
Zobrazit Galériu