Aktywności (Activities) Cz. 1.

Po paru wpisach dotyczących zorganizowania samego środowiska dla rozwijania aplikacji na Androida warto byłoby przejść do konkretniejszych rzeczy.

Podstawą każdej aplikacji są aktywności (activities). Aktywność w odniesieniu do aplikacji z systemu Windows jest to jedno okno, na którym wyświetlają się kontroliki, z których korzysta użytkownik. Czyli kompleksowa aplikacja składa się ze zbioru aktywności, z którego każda aktywność ma swoją funkcję. Aktywność najcześciej obejmuje cały ekran. Od strony kodu wygląda to tak, że aktywnością jest klasa dziedzicząca po klasie Activity. W jednym z wczesniejszych postów stworzyliśmy pierwszą aplikację Hello World. Podczas tworzenia projektu w Eclipse automatycznie stworzyła sie pierwsza aktywność w katalogu src. 

package androidblog.app;

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

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

Automatycznie również przeciążona jest metoda onCreate (linia 9), która jest wywołana po stworzeniu aktywności.

Metoda setContentView odpowiada za ustawienie widoku jaki ma zostać wyświetlony dla danej aktywności. Widoki (zapewne zostanie im poświęcony osobny post) pobierane są za pośrednictwem automatycznie generowanej klasy R (od SDK 1.5 znajduje się ona w katalogu gen). Widokiem dla aktywności jest plik XML opisujący wygląd interfejs uzytkownika. Znajduje się on w katalogu res/layout.

Cykl życia aktywności

Wcześniej wspomniana metoda onCreate wykonywana jest w momencie pierwszego wywołania aktywności. Oczywiście istnieje szereg metod służących obsłudze stanów całego cyklu życia aktywności.

 @Override
 protected void onRestart() {
 super.onRestart();
 }

 @Override
 protected void onPause() {
 super.onPause();
 }

 @Override
 protected void onResume() {
 super.onResume();
 }

 @Override
 protected void onStart() {
 super.onStart();
 }

 @Override
 protected void onStop() {
 super.onStop();
 }

@Override
protected void onDestroy() {
super.onDestroy();
 }

Zmiana aktywności aplikacji

W celu zmiany aktywności wykorzystuje sie metodę startActivity. Teraz dla przykładu stworzymy aplikację, która na pierwszej aktywności będzie zawierała przycisk do przejscia do drugiej aktywności. Tworzymy nowy projekt o nazwie Aplikacja1

2009-04-18_1437

Natępnie tworzymy nową aktywność

2009-04-18_1438

W oknie nowej klasy jako superklasę podajemy klasę Activity z pakietu android.app, a jako nazwe podajemy DrugaAktywnosc.

2009-04-18_1440

Dodatkowo nowo dodaną aktywność należy obowiązkowo dodać do pliku manifestu czyli AndroidManifest.xml. Otwieramy plik manifestu a następnie w zakładne Application w dziale Application Nodes dodajemy aktywność podajać nazwę klasy reprezentującej tą aktywność.

2009-04-19_0000

Mamy dwie aktywności, teraz należy dodać przycisk do widoku pierwszej aktywności. Otwieramy plik main.xml a następnie przeciągamy kontrolkę Button na szablon a następnie zapisujemy szblon i wracamy do pliku klasy pierwszej aktywności.

2009-04-18_1932

Przycisk należy oprogramować tak aby po kliknięciu na niego zmieniała się aktywność aplikacji.

 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);

 Button przycisk = (Button) findViewById(R.id.Button01);
 przycisk.setOnClickListener(new OnClickListener(){
 public void onClick(View v) {
 startActivity(new Intent(PierwszaAktywnosc.this, DrugaAktywnosc.class));
 }
 });
 }

Najpierw metodą findViewById pobieramy element z szablonu (należy go odpowiednio rzutować) a następnie dzięki anonimowej klasie implementującej interfejs OnClickListener tworzymy zdarzenie wywoływanie podczas kliknięcia na przycisk. Samo wywołanie nowej aktywności następuje dzięki, wcześniej wspomnianej, metodzie startActivity, która przyjmuje za argument obiekt klasy Intent (lada dzień będzie o post poświęcony Intentom :)).

Po po uruchomieniu aplikacji i naciśnięciu na przycisk powiniena pojawić się pusta aktywność. Jest jak najbardziej poprawne gdyż nie dodaliśmy do drugiej aktywności żadnego szablonu.

1 komentarz

  1. Bardzo ciekawy przykład. Dobry kawał roboty.
    Dlaczego nie ma części 2 ?
    Proszę o co jeszcze w tym stylu.

Zostaw komentarz