Hello World - naše první aplikace

V minulé části jsme si ukázali, jak vytvořit Android projekt v Eclipse. Předpokládám, že tedy začínáme z tohoto bodu.

package cz.cvut.fel.android;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MyActivity extends Activity
{
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    TextView tv = new TextView(this);
    tv.setText("Hello, Android");
    setContentView(tv);
  }
}

Metoda onCreate je tedy zavolána při spuštění aplikace. "Aktivita" je programová entita, se kterou může interagovat uživatel. Aplikace těchto aktivit může mít více a většinou mají uživatelské rozhraní (GUI), ale není to povinná vlastnost.

Uživatelské prostředí v platformě Android se skládá z hierarchie objektů - tzv. pohledů (Views). Pokud jste například pracovali s Google Web Toolkitem, je to velice podobný systém. View může být například TextView (textové políčko) - jako v našem případě - či tlačítko, RadioButton a další. Existují i komplexnější pohledy jako například TableLayout či GridView. O pohledech si povíme více v kapitole "Komponenty GUI".

V metodě onCreate tedy na řádku 14 vytvoříme nový pohled s odkazem na aktivitu, na dalším řádku akorát nastavíme text a nakonec nastavíme aktivitě základní pohled, který se k ní má přiřadit.

Spuštění aplikace

Nyní můžeme aplikaci Hello World spustit. Klikneme na ikonku pro spuštění resp. vybereme v menu Run > Run a zvolíme "Run As" > Android Application.

V tomto okamžiku by se měl nastartovat Android Emulator. Zvlášť, pokud máte pomalejší stroj, mějte strpení se spuštěním. Až se vám objeví základní obrazovka telefonu s hlášení zamknuté klávesnice, klikněte na tlačítko "Menu" a aplikace se zobrazí na displeji.

Debugování projektu

Nyní zkuste změnit kód uvedený výše takto:

package cz.cvut.fel.android;

import android.app.Activity;
import android.os.Bundle;

public class MyActivity extends Activity
{
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    Object o = null;
    o.toString();
    setContentView(R.layout.main);
  }
}

Ano, aplikace by měla vyhodit Null Pointer Exception. Zkuste ji spustit. V prostředí Androidu to vypadá takto:

Pokud si přidáte na řádek 14 breakpoint a spustíte aplikaci jako Run > Debug History > MyAndroidApp, zastaví se v místě výjimky a můžete použít standardní debugovací techniky jako u klasických Java aplikací.