Activity

Aktivita predstavuje prezenčnú vrstvu aplikácie. Jedna aktivita reprezentuje jednu obrazovku aplikácie (napr. hlavné menu, prihlasovacia obrazovka, registračný formulár – obrazovka, atď.). V každom projekte musí byť jedna aktivita v android manifeste označená za hlavnú aktivitu. Táto aktivita sa spustí ako prvá pri spustení aplikácie. Aktivity sa ukladajú do java adresára v projekte. Životný cyklus aktivity je popípsaný v časti Architektúra à Životný cyklus aktivity.

Pridanie activity

Okrem hlavnej activity, ktorá sa vytvorí pri založení nového projektu (viď “Vytvorenie nového projektu”)  môžeme vytvoriť ďalšie activity:

  • pravým kliknutím myšky na adresár java NewàActivity a následne si vybrať šablónu activity, ktorú chceme použiť
  • vytvorením novej Java triedy a následne pridať dedenie z konkrétnej activity (napr. extends AppCombarActivity). Nesmieme zabudnúť pridať metódu onCreate() s nastavením XML súboru pre vzhľad aplikácie (res-->layout)

Pridanie novej aktivity

Rozbor activity

Najjednoduchšia aktivita, ktorú môžeme vytvoriť je EmptyActivity. Táto šablóna obsahuje iba prázdnu aktivitu, ktorá môže a nemusí mať panel akcií ActionBar. Dialógové okno vytvárania novej aktivity obsahuje nasledujúce časti:

  • Activity Name – názov našej aktivity.
  • Zaškrtávacie tlačidlo Generate Layout File – ak túto možnosť zaškrtneme, tak Android Studio vytvorí automaticky aj súbor so vzhľadom.
  • Layout Name – ak sme zaškrtli možnosť na vygenerovanie súboru so vzhľadom, môžeme zmeniť názov tohto súboru.
  • Zaškrtávacie tlačidlo Launcher Activity – ak zaškrtneme túto možnosť, tak sa pridá aktivita do android manifestu. Do manifestu sa pridá nasledujúci kód, ktorý však obsahuje aj intent-filter, ktorý umožňuje nastaviť takúto aktivitu ako hlavnú aktivitu našej aplikácie (v časti Run --> Edit Configurations môžeme prepínať, ktorá aktivita bude hlavná- teda sa spustí ako prvá):
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Ak necháme toto tlačidlo nezaškrtnuté, aktivita sa pridá do manifestu, ale nebude obsahovať intent-filter, ktorý umožňuje nastaviť túto aktivitu ako hlavnú.

  • Zaškrtávacie tlačidlo Backwards Compatibility (AppCombat) – ak odškrtneme túto možnosť, tak sa vytvorí aktivita bez panela akcií ActionBar. Vytvorená aktivita bude dediť z hlavnej triedy Activity. Ak necháme túto možnosť zaškrtnutú, naša aplikácia bude obsahovať panel akcií ActionBar a aktivita bude dediť z triedy AppCombatActivity.
  • Package name – určíme do ktorého balíčka sa vloží naša aktivita.

V dialógovom okne pre vytvorenie novej EmptyActivity nazveme našu aplikáciu MojaAktivita, zaškrtneme možnosť vygenerovať súbor so vzhľadom, názov tohto súboru necháme nezmenený, odškrtneme možnosti pre pridanie aktivity do manifestu a odškrtneme aj použitie panela akcií ActionBar, tak dostaneme nasledujúci kód:

import android.os.Bundle;
import android.app.Activity;
public class MojaAktivita extends Activity {

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

Na začiatku sú naimportované triedy, ktoré používame v našej aktivite. Nesmieme zabudnúť naimportovať všetky triedy, na ktoré sa odkazujeme. Aktivita bude dediť z triedy Activity. Táto trieda predstavuje základnú triedu pre všetky aktivity.

Pri spustení aplikácie je volaná metóda onCreate(), ktorá sa volá vždy pri vytvorení activity, ak bola aktivita prekrytá inou aktivitou a používateľ sa vrátil späť, ak bola vynútená zmena zdrojov (otočenie telefónu, pripojenie HW klávesnice, zmena jazyka, atď.)

Metóda setContentView() nastavuje vzhľad aplikácie zo súboru v adresáry res/layout.

Všetky vytvorené aktivity v projekte musia byť pridané do android manifestu!!!

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MojaAktivita2"></activity>
</application>