[ Pobierz całość w formacie PDF ]

złożoności plasuje się pomiędzy naszą aplikacją  Hello World! a w pełni rozwiniętą aplika-
cją na Androida, zatem analiza jej składników pozwoli niejako pojąć realny proces projek-
towania w środowisku SDK.
Wczytanie oraz uruchomienie aplikacji Notepad
W tym ustępie wyjaśnimy, w jaki sposób załadować aplikację Notepad w środowisku Eclip-
se i uruchomić ją na emulatorze. Przed rozpoczęciem należy wiedzieć, że w aplikacji Note-
pad zaimplementowano kilka różnych opcji. Użytkownik może na przykład stworzyć nową
notatkę, edytować istniejącą notatkę, usunąć ją, przejrzeć listę notatek i tak dalej. Kiedy
aplikacja zostanie uruchomiona, nie będzie w niej żadnych zapisanych notatek, więc użyt-
kownik ujrzy pustą listę. Po wciśnięciu przycisku Menu zostanie wyświetlona lista czynności,
wśród nich opcja dodania nowej notatki. Po utworzeniu nowego pliku można go edytować
lub usunąć za pomocą odpowiedniej opcji.
%7łeby wczytać przykładową aplikację Notepad w środowisku Eclipse, należy wykonać nastę-
pujące czynności:
60 Android 2. Tworzenie aplikacji
1. Uruchom program Eclipse.
2. Otwórz File/New/Project.
3. W oknie dialogowym New Project wybierz Android/Android Project i kliknij Next.
4. W następnym oknie wpisz NotesList jako nazwę projektu, wybierz opcję Create
project from existing sample, następnie zaznacz pole Android 2.0.1 na liście Build
Target, a z rozwijanej listy wybierz aplikację Notepad. Zwróć uwagę, że jest ona
umiejscowiona w folderze platforms\android-2.0\samples pakietu Android SDK,
który wcześniej pobrałeś. Po wybraniu tej aplikacji zostanie automatycznie
odczytany plik AndroidManifest.xml i zostaną wypełnione pozostałe pola w tym
oknie dialogowym (rysunek 2.13).
Rysunek 2.13. Tworzenie aplikacji Notepad
5. Kliknij przycisk Finish.
Teraz powinna być dostępna aplikacja Notepad w środowisku Eclipse. Jeżeli zostaną wy-
świetlone jakieś informacje o problemach związanych z tym projektem, można spróbować
użyć opcji Clean z menu Project, aby je wyczyścić. %7łeby uruchomić aplikację, można utwo-
rzyć aplikację uruchomieniową (podobnie jak to zrobiliśmy przy okazji programu  Hello
World! ) lub wystarczy kliknąć prawym przyciskiem ikonę projektu, wybrać opcję Run As,
Rozdział 2 Pierwsze koty za płoty 61
a następnie Android Application. Zostanie uruchomiony emulator i zainstalowana na nim
aplikacja. Po wczytaniu emulatora (można poznać, że zostanie wczytany po wyświetleniu
daty i godziny na środku jego ekranu) wystarczy wcisnąć przycisk Menu, żeby została wy-
świetlona aplikacja Notepad. Aby się z nią zaznajomić, można po niej pomyszkować przez
kilka minut.
Rozłożenie kodu na czynniki pierwsze
Przyjrzyjmy się teraz strukturze aplikacji (rysunek 2.14).
Rysunek 2.14. Struktura aplikacji Notepad
Jak widać, program zawiera kilka plików .java, obrazów .png, trzy widoki (w folderze layo-
ut) oraz plik AndroidManifest.xml. Gdyby to była aplikacja wiersza poleceń, należałoby szu-
kać pliku, w którym jest umieszczona metoda Main. Zatem co jest odpowiednikiem metody
Main w Androidzie?
W środowisku Android jest definiowana początkowa aktywność, zwana także aktywnością
szczytowego poziomu. Jeżeli przyjrzeć się zawartości pliku AndroidManifest.xml, można tam
znalezć jednego dostawcę oraz trzy aktywności. Aktywność NotesList wyznacza filtr intencji dla
akcji android.intent.action.MAIN, a także dla kategorii android.intent.category.LAUNCHER.
62 Android 2. Tworzenie aplikacji
Po uruchomieniu aplikacji Androida zostaje ona wczytana przez urządzenie i jest odczyty-
wany plik AndroidManifest.xml. Zostają wyszukane i uruchomione aktywności posiadające
filtr intencji, który składa się z aktywności MAIN oraz kategorii LAUNCHER, tak jak poka-
zano poniżej.
Po odnalezieniu właściwej aktywności urządzenie musi powiązać ją z rzeczywistą klasą. Do-
konuje tego poprzez połączenie nazwy głównego pakietu z nazwą aktywności, w naszym
wypadku będzie to com.example.android.notepad.NotesList (listing 2.1).
Listing 2.1. Plik AndroidManifest.xml
package="com.example.android.notepad"
>
android:label="@string/app_name"
>
android:authorities="com.google.provider.NotePad"
/>
...
Nazwa głównego pakietu aplikacji jest zdefiniowana jako atrybut elementu w pliku
AndroidManifest.xml, a każda aktywność posiada atrybut nazwy.
Po określeniu początkowej aktywności zostaje ona uruchomiona oraz ulega wywołaniu
metoda onCreate(). Przyjrzyjmy się elementowi NotesList.onCreate(), przedstawione-
mu w listingu 2.2.
Rozdział 2 Pierwsze koty za płoty 63
Listing 2.2. Metoda onCreate
public class NotesList extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setDefaultKeyMode(DEFAULT_KEYS_SHORTCUT);
Intent intent = getIntent();
if (intent.getData() == null) {
intent.setData(Notes.CONTENT_URI);
}
getListView().setOnCreateContextMenuListener(this);
Cursor cursor = managedQuery(getIntent().getData(),PROJECTION, null, null,
Notes.DEFAULT_SORT_ORDER);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.noteslist_item, cursor, new String[] { Notes.TITLE },
new int[] { android.R.id.text1 });
setListAdapter(adapter);
}
}
Aktywności w Androidzie są przeważnie uruchamiane przez intencje, a także przez inne
aktywności. Metoda onCreate() sprawdza, czy intencja bieżącej aktywności zawiera dane
(notatki). Jeżeli nie zawiera, zostaje ustanowiony identyfikator URI, dzięki któremu zostają
pobrane dane. W rozdziale 3. zademonstrujemy, że Android uzyskuje dostęp do danych
poprzez dostawców treści korzystających z identyfikatorów URI. W tym przypadku identy-
fikator URI dostarcza wystarczająco wiele informacji, żeby pobrać dane z bazy danych. Stała
Notes.CONTENT_URI jest zdefiniowana jako element static final w pliku Notepad.java:
public static final Uri CONTENT_URI =
Uri.parse("content://" + AUTHORITY + "/notes");
Klasa Notes znajduje się wewnątrz klasy Notepad. Na razie wystarczy wiedzieć, że identyfi-
kator URI przedstawiony powyżej każe dostawcy treści pobrać wszystkie notatki. Gdyby
identyfikator ten wyglądał następująco:
public static final Uri CONTENT_URI =
Uri.parse("content://" + AUTHORITY + "/notes/11");
to używany dostawca treści zwróciłby notatkę posiadającą identyfikator o wartości 11. Te-
mat dostawców treści oraz identyfikatorów URI zostanie poruszony w rozdziale 3. [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • thierry.pev.pl
  •