Systemy Wbudowane
Dr inż. Mariusz Fraś
Android
cz. 2
© maf 1
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Architektura aplikacji
" Struktura i elementy koncepcyjne aplikacji
Aktywność
Widok
(activity)
(view)
Intencja
Odbior. komunik.
(intent)
Aktywacja
(broadcast receiver)
Usługa Dostawca treści
(service) (content provider)
" Szablon aplikacji
Jeden.java kod zródłowy głównej klasy
AndroidManifest.xml deklaruje składników aplikacji
R.java kod klasy R, identyfikatory zasobów
main.xml główny plik zasobów
Pliki zasobów
strings.xml dodatkowe zasoby
inny_plik.xml inne pliki zasobów
© maf 2
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Układy graficzne
" LinearLayout
Prosty układ liniowy pionowy lub poziomy
Atrybuty sterujÄ…ce wyglÄ…dem
" orientation horizontal / vertical
" gravity pozycjonowanie wewnÄ…trz widoku
" center, center_horizontal, & , right, left, top, bottom, &
" layout_gravity pozycjonowanie wzgl. widoku nadrzędnego
" padding
brzeg dotykajÄ…cy inne widoki
margin
brzeg widoku
" margin
padding
widok
" wypełnienie
" wrap_content
" fill_parent/ match_parent
" layout_weight waga wypełnienia
" 0 domyślne
" 1 maksymalne (zajęcie całej niewypełnionej przestrzeni)
© maf 3
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Układy graficzne
" LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="@dimen/vertical_margin"
...>
© maf 4
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Układy graficzne
" RelativeLayout
Rozmieszczanie elementów ekranu względem siebie lub pojemnika
nadrzędnego
" Odniesienie do obiektu w formie: @+id/identyfikator_obiektu
Atrybuty sterujące położeniem
atrybut opis atrybut opis
umieszczenie powyżej podanego wyśrodkowanie poziome wzgl.
layout_above layout_centerHorizontal
widoku obiektu nadrzędnego
umieszczenie poniżej podanego j.w. pionowe
layout_below layout_centerVertical
widoku
wyrównanie dolnych krawędzi j.w. pionowe i poziome
layout_alignBottom layout_centerInParent
wzgl. podanego widoku
j.w. końcowych wyrównanie początkowej
layout_alignEnd layout_toEndOf
krawędzi wzgl. końcowej
j.w. lewych j.w. prawej do lewej
ayout_alignLeft layout_toLeftOf
j.w. prawych j.w. lewej do prawej
layout_alignRight ayout_toRightOf
j.w. początkowych j.w. końcowej do początkowej
layout_alignStart layout_toStartOf
j.w. górnych jak dla layout_alignxxx ale w
layout_alignTop layout_alignParentxxx
stosunku do ob. nadrzędnego
© maf 5
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Układy graficzne
" RelativeLayout
...>
...
... />
android:layout_below="@+id/editText1"
android:layout_alignRight="@+id/editText1"
... />
android:layout_below="@+id/button1"
android:layout_toLeftOf="@+id/button1"
android:text="Tekst od lewego rogu"
... />
...
android:layout_below="@+id/button3"
android:layout_toRightOf="@+id/button3"
... />
...
© maf 6
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Układy graficzne
" TableLayout
...>
... >
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:id="@+id/button1"
... />
... />
... />
... />
...
© maf 7
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Układy graficzne
" FrameLayout
Najprostszy układ pusta przestrzeń na ekranie
Do dynamicznej prezentacji obiektu (zmieniania go)
" W danej chwili może być widoczny jeden obiekt
" Dodawane kolejne widoki przesłaniają poprzednie tworzą stos
" AbsoluteLayout
Używa współrzędnych bezwzględnych
" android:layout_x="..." " android:layout_y="..."
Niezalecane
" ScrollView
" Inne
ListView
GridView
TabView
MapView
...
© maf 8
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Układy graficzne
" Układ FrameLayout
android:id="@+id/frameLayout1"
... > plik XML definiujÄ…cy
układ graficzny
... />
...
android:visibility="gone" />
pliku kodu
public void onClick(View view) {
... aktywności
TypWidoku2 widok2 = (...) FrameLayoutActivity.this.findViewById(R.id.id_widoku2);
widok2.setVisibility(View.VISIBLE);
dla widoku widok1
view.setVisibility(View.GONE);
w metodach nasłuchujących
}
na kliknięcie
public void onClick(View view) {
dla widoku widok2
...
TypWidoku1 widok1 = (...) FrameLayoutActivity.this.findViewById(R.id.id_widoku1);
widok1.setVisibility(View.VISIBLE);
view.setVisibility(View.GONE);
}
© maf 9
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Kontrolki (Views)
" Kontrolki
TextView etykieta tekstowa
© maf 10
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Obsługa zdarzeń wejścia
" Obsługa interakcji z kontrolkami
2 sposoby
" Definiowanie słuchacza zdarzeń (event listener) i rejestrowanie go dla
widoku
" Klasa View zawiera kolekcję interfejsów o nazwie On
Listener
" Z odpowiadajÄ…cÄ… mu metodÄ… On()
" Nadpisanie istniejÄ…cej metody zwrotnej (callback) widoku
" Używane przy implementacji własnych widoków (custom component)
" Gdy chcemy obsłużyć określone zdarzenia dla komponentu (np. dotknięcie
ekranu onTouchEvent(), naciśnięcie klawisza onKeyEvent()itp.)
" Menu
osobna struktura obsługiwana we własny, specyficzny sposób
Nie ma potrzeby rejestrowania słuchaczy do elementów menu
Po wybraniu pozycji wywoływane są metody:
onOptionsItemSelected() lub
onContextItemSelected()
© maf 11
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Obsługa zdarzeń wejścia
" Słuchacze zdarzeń widoków
Schemat:
OnListener z odpowiadajÄ…cÄ… mu metodÄ… On()
" View.OnClickListener metoda obsługi: onClick()
" Dotkniecie komponentu (na ekranie) lub użycie enter gdy obiekt ma fokus
" View.OnLongClickListener metoda obsługi: onLongClick()
" Dłuższa interakcja (przytrzymanie ponad 1 sekundę)
" View.OnKeyListener metoda obsługi: onKey()
" Naciśnięcie lub puszczenie klawisza urządzenia
" View.OnTouchListener metoda obsługi: onTouch()
" Reakcja na akcję dotyku (nacisk, zwolnienie, przesuwanie w obrębie
komponentu)
" View.OnFocusChangeListener metoda: onFocusChange()
" Obsługa uzyskania lub utraty ogniska (ang. focus)
Rejestracja słuchaczy metodami:
setOnListener() (np. setOnClickListener())
© maf 12
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Obsługa zdarzeń wejścia
" Schemat implementacji (dla przykładu przycisku)
Metoda 1
w pliku XML
zdefiniowany
android:id = "@+id/prz1
przycisk
android:text = "@+string/napis_przycisku"
android:textstyle = "bold"
android:layout_width = "fill_parent"
... />
public class Aktywnosc extends Activity {
anonimowa
protected void onCreate(Bundle savedValues) {
implementacja
...
słuchacza
private OnClickListener mojSluchacz = new onClickListener() {
public void onClick(View widok) {
metoda obsługi
// obsługa naciśnięcia przycisku
zdarzeń
}};
tu: onClick() dla
...
widoku widok
Button przycisk = (Button)findViewById(R.id.prz1);
przycisk.setOnClickListener(mojSluchacz);
...
kod Java rejestracja słuchacza
}}
aktywności
© maf 13
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Obsługa zdarzeń wejścia
" Schemat implementacji (dla przykładu przycisku)
Metoda z klasÄ… anonimowÄ… (wersja 2)
w pliku XML
zdefiniowany
android:id = "@+id/prz1
przycisk
android:text = "@+string/napis_przycisku"
android:textstyle = "bold"
android:layout_width = "fill_parent"
... />
public class Aktywnosc extends Activity {
protected void onCreate(Bundle savedValues) {
anonimowy
...
obiekt
Button przycisk = (Button)findViewById(R.id.prz1);
słuchacza
przycisk.setOnClickListener(new onClickListener()
{
rejestracja słuchacza
public void onClick(View widok) {
// obsługa naciśnięcia przycisku
metoda obsługi zdarzeń
}
tu: onClick() dla widoku
});
widok
kod Java
}}
aktywności
© maf 14
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Obsługa zdarzeń wejścia
" Schemat implementacji (dla przykładu przycisku)
Metoda z definiowaniem handlera w pliku XML
od wersji
Android 1.6
android:id = "@+id/prz1
android:text = "@+string/napis_przycisku"
nazwa metody obsługi
...
android:onClick="mojClickHandler"
/>
...
Button btn = (Button) this.findViewById(R.id.prz1);
public void mojClickHandler(View widok)
{
switch(v.getId())
{
case R.id.prz1: ... ; break;
metoda mojClickHandler()
case ...
może obsługiwać także inne
}
kontrolki
}
kod Java
...
aktywności
© maf 15
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Obsługa zdarzeń wejścia
" Schemat implementacji (dla przykładu przycisku) c.d.
Aktywność jako słuchacz (unikamy tworzenia nowego obiektu)
public class Aktywnosc extends Activity implements OnClickListener {
protected void onCreate(Bundle savedValues) {
...
słuchacz
Button przycisk = (Button)findViewById(R.id.prz1);
przycisk.setOnClickListener(this);
}
rejestracja słuchacza
public void onClick(View widok) { metoda obsługi zdarzenia
// obsługa naciśnięcia przycisku tu: onClick()
}
}
" Inne kontrolki podobny schemat
CheckBox
" interfejs: OnCheckedChangeListener
" metody: setOnCheckedChangeListener() onCheckedChange()
...
© maf 16
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Powiadomienia
" Powiadomienia o zdarzeniach (Notifications)
Toast Notification krótka wiadomość wyskakująca (pop-up)
Status Bar Notification trwałe przypomnienia z opcjonalnym
tekstem i rozszerzoną wiadomością (po wybraniu wysyła intencję)
Dialog Notification małe okienko przechwytujące zdarzenia
" android.widget.Toast
Context kontekst = getApplicationContext();
kontekst aplikacji
CharSequence komunikat = "NacisnÄ…Å‚eÅ› przycisk";
treść napisu
Toast toast = Toast.makeText(kontekst, komunikat, Toast.LENGTH_SHORT);
toast.show();
czas wyświetlania
Czas wyświetlania: Toast.LENGTH_SHORTi Toast.LENGTH_LONG
Pozycjonowanie: Toast.setGravity(int g, int x, int y)
Forma skrócona:
Toast.makeText(contekst, komunikat , Toast.LENGTH_SHORT).show();
np. this
© maf 17
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje
" Intencja (intent)
Obiekt definiujÄ…cy akcjÄ™ do wykonania i powiÄ…zane z niÄ… dane
" Wykorzystywana przez aplikacje lub przez system do powiadamiana
składników aplikacji o zdarzeniach lub czynnościach do wykonania
" Np. uruchamianie aktywności, uruchamianie usługi, itp.
" Może specyfikować dane do przetworzenia
" Może definiować oczekiwanie na zwrot rezultatów działania
" Dla odbiorników komunikatów definiuje rozgłaszany komunikat
Wywoływanie wewnętrznych lub
Aktywność główna
zewnętrznych składników aplikacji
" Wywoływanie innych
Results
aktywności aplikacji
" Wywoływania aplikacji z
Intent
Aktywność 2
poziomu innej aplikacji
Data
Interakcje działają w trybie
asynchronicznym
Aktywność 3
© maf 18
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje
" Uruchamianie aktywności
Akcja predefiniowana lub zdefiniowana przez dla aplikacji
Dane opcjonalne
Intent(Action + Data)
Aktywność 1 Aktywność 2
Results (opcjonalne)
Metody:
" startActivity(Intent intencja)
" Uruchomienie aktywności w oddzielnym wątku, w postaci modalnego okna
(wywołanie asynchroniczne, bez wywołań zwrotnych)
" startActivityForResult(Intent intencja)
" j.w. ale z wywołaniem zwrotnym (metody onActivityResult)
" Uruchamianie serwisu komunikacja z serwisem w tle
" startService(Intent intencja)
" bindService(Intent intencja, & )
" Przekazanie komunikatu wysłanie intencji do komponentu typu
BroadcastReceiver
" sendBroadcast(Intent intencja), ...
© maf 19
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje
" Atrybuty intencji
Action
" Metoda ustawiajÄ…ca: Intent.setAction(String)
Data postaci URI
" Metoda konwersji: Uri.parse(String)
" Metoda ustawiajÄ…ca: Intent.setData(Uri)
Category określa rodzaj komponentu, który powinien obsłużyć
intencjÄ™
" Metoda ustawiajÄ…ca: Intent.addCategory(String)
Component name identyfikator składnika aplikacji
" Obiekt ComponentName określony przez pakiet + FQCN
" Metoda ustawiajÄ…ca : Intent.setComponent(ComponentName)
Type określa typ MIME danych
" Normalnie jest określany z samych danych, ale można podać wprost
" Metoda ustawiajÄ…ca: Intent.setType(String)
Extras dane dodatkowe
" Metoda ustawiajÄ…ca: Intent.putExtra(& )
© maf 20
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje
" 2 typy intencji
Jawne (Explicit Intent)
" Specyfikacja odbiorcy za pomocÄ… jego nazwy
" Zazwyczaj dla uruchamiania aktywności tej samej aplikacji lub
podporzÄ…dkowanego serwisu
Niejawne (Implicit Intent)
" Bez dokładnej specyfikacji odbiorcy pózne wiązanie
" Zazwyczaj dla aktywacji komponentów innych aplikacji
" Określanie aktywności do aktywacji kolejność:
1. Obiekt ComponentName aktywności dla intencji jawnych
2. Nazwa akcji intencji
3. Typ danych intencji (identyfikator URI danych)
4. Kategoria intencji
5. Gdy brak decyzji system wyświetla listę aktywności i umożliwia
wybór
© maf 21
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje
" Intencje jawne
Uruchomienie aktywności poprzez określenie jej obiektu
ComponentName identyfikatora składnika aplikacji
" Uruchomienie aktywności Contacts
Intent intencja = new Intent();
obiekt ComponentName Å‚Ä…czy
intencja.setComponent(new ComponentName(
nazwÄ™ pakietu z nazwÄ… klasy
com.android.contacts ,
com.android.contacts.DialContactsEntryActivity );
startActivity(intencja);
Uruchomienie za pomocą nazwy klasy aktywności
specyfikacja klasy odbiorcy intencji
Intent intencja = new Intent(kontekst, InnaAktywnosc.class);
startActivity(intencja);
Kontekst aplikacji implementujÄ…cej
wywołanie (np. this)
© maf 22
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje
" Intencje niejawne
Definiowane w filtrach intencji w pliku deskryptora
android:label = "Test aktywnosci"
android:name = "Jeden">
pakiet część stałą identyfikator akcji
Użycie wywołanie aktywności
public static void wywolajAplikacje(Activity wlasnaAktywnosc)
{
String akcja = org.mojpakiet.intent.action.MojaAkcja ;
Intent intencja = new Intent(akcja);
wlasnaAktywnosc.startActivity(intencja);
uruchomienie aktywności
}
© maf 23
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje
" Intencje predefiniowane
Dostępny jest zestaw predefiniowanych intencji, za pomocą
których można uruchamiać aplikacje systemowe
public static void wywolajAplikacje(Activity aktywnosc)
{
nazwa akcji
Intent intencja = newIntent(Intent.ACTION_XXX);
intencja.setData(Uri.parse("dane"));
dane dla intencji
aktywnosc.startActivity(intencja);
(w postaci Uri)
}
Akcje określają działanie związane z intencją
" ACTION_XXX standardowe akcje aktywacji (np. ACTION_EDIT)
i rozgłoszeń (np. ACTION_TIME_TICK)
" Podczas uruchamiania aplikacji wyszukiwane są aktywności o akcji
ACTION_MAIN (android.intent.action.MAIN)
Kategorie dodatkowy filtr dla uruchamianych aktywności
" Podczas uruchamiania aplikacji wyszukiwane są aktywności o kategorii
CATEGORY_LAUNCHER (android.intent.category.LAUNCHER)
© maf 24
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje
" Akcje (wybrane)
Akcja Dane (Uri)
Opis
ACTION_CALL tel:601-601-601 połączenie z numerem telefonu
ACTION_DIAL tel:601-601- klawiatura do wpisywania numeru
ACTION_EDIT content://contacts/people/3edycja informacji elementu o podanym identyfik.
ACTION_GET_CONTENT jak PICK, ale zwracana elem. określonego typu MIME
ACTION_MAIN aktywność początkowa
aktywność, która zwraca wynik (wyświetla listę
ACTION_PICK elementów, umożliwia wybór jednego z nich i zwraca
identyfikator URI wybranego elementu)
http://www.google.com uruchomienie przeglądarki www, wyświetlenie mapy
ACTION_VIEW
geo:lat,long?z=zoom itp.
ACTION_WEB_SEARCH http://www.google.com uruchomienie wyszukiwania www
" Kategorie (wybrane)
Kategoria
Opis
CATEGORY_DEFUALT aktywność domyślna
CATEGORY_HOME aktywność jest ekranem początkowym
CATEGORY_LAUNCHER wyświetlana na ekranie początkowym systemu
CATEGORY_PREFERENCE aktywność odpowiedzialna za ustawienia, wyświetlana na ekranie ustawień
CATEGORY_TAB możliwa do osadzenia w określonej aktyw. nadrzędnej
© maf 25
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Przykłady
" Użycie predefiniowanej intencji i identyfikatora
zasobu URI
wybieranie numeru telefonu użycie
danych dla numeru telefonu
Intent iii = new Intent(Intent.ACTION_DIAL,
Uri.parse( 071-320-2319 ));
startActivity(iii);
© maf 26
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Przykłady
" Użycie atrybutu Type
Wyświetlenie obrazków
Intent iii = new Intent();
iii.setType( image/pictures/* );
iii.setAction(Intent.ACTION_GET_CONTENT);
startActivity(iii);
© maf 27
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Przykłady
" Wysłanie wiadomości
z użyciem atrybutu dodatkowych
danych (Extras)
© maf 28
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Przykłady
" Przykład:
Activity1 wyświetla interfejs do akceptacji numeru
i
Wywołuje Activity2 do wykonania połączenia
© maf 29
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Przykłady
" Przykład (c.d.):
Activity1 wyświetla interfejs do akceptacji numeru
Wywołuje Activity2 do wykonania połączenia
© maf 30
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Przykłady
" Przykład (c.d.):
Activity1 wyświetla interfejs do akceptacji numeru
Wywołuje Activity2 do wykonania połączenia
© maf 31
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje zwrot rezultatów
" Wywołanie aktywności ze zwrotem rezultatów
Aktywność 1 Intent(Action+Data
Aktywność 2
+requestID)
startActivityForResult
getIntent
setResult
onActivityResult
Intent(requestID+
finish
+resultCode+Data)
startActivityForResult(Intent i, int reqID)
" Uruchomienie aktywności z wywołaniem zwrotnym
" reqID arbitralnie wybrana wartość identyfikująca żądanie
onActivityResult(int regID, int resC, Intent i)
" resC rezultat wykonania, standardowo:
" Activity.RESULT_CANCELED
" Activity.RESULT_OK
setResult(int resC) ustawienie kodu rezultatu
© maf 32
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje zwrot rezultatów
" Schemat wymiany danych
protected void onCreate(& ) {
referencja
...
odczyt danych
intencji
String akcja = ...;
z intencji
wywołującej
Intent iii = new Intent(akcja, Uri.parse(dane));
startActivityForResult(iii, KOD_OP);
}
wysłanie intencji zwrotnej
protected void onCreate(& ) {
...
odbiór rezultatu
@Override
Intent iii = getIntent();
protected void onActivityResult(int reqID,
String dane_wej = iii.getData();
int resC,
...
Intent ii)
dane
ustawienie
// wykonaj operacje
{
danych
...
if (resC == Activity.RESULT_OK &&
reqID == KOD_OP)
iii.setData(dane_wyj);
sprawdze
{
setResult(Activity.RESULT_OK, iii);
nie kodu
String dane = ii.getDataString();
finish();
rezultatu
...
}
odczyt
//... i dalej rób co trzeba
ustawienie
}
danych z
kodu rezultau i
else {
intencji
zakończenie danych
// obsłuż inne przypadki
aktywności (intencji)
}
}
© maf 33
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje zwrot rezultatów
" Wymiana wielu danych
Bundle reprezentowane przez klasÄ™ Bundle
" Mechanizm używany do przekazywania różnorodnych danych
" Kolekcja par
" Metody składowania: Bundle.putXxx( nazwa , wartosc)
" Metody wyłuskiwania: Bundle.getYyy( nazwa , wartosc)
" Np. putDouble( zm1 , 3.14)
Double z = getDouble( zm1 )
Przekazywanie danych poprzez intencje
" Utworzenie zmiennej typu Bundle
" Wstawienie danych do zmiennej
" Dodanie bundle do intencji (która będzie wysłana) metodą:
Intent.putExtras(Bundle dane)
Odebranie danych
" Pobranie bundle z intencji:
Bundle Intent.getExtras()
© maf 34
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Intencje zwrot rezultatów
" Schemat użycia Bundle
protected void onCreate(& ) { protected void onCreate(& ) {
... ...
Intent iii = new Intent(akcja); Intent iii = getIntent();
Bundle dane = new Bundle(); Bundle dane = new Bundle();
dane.putInt( zm1 , 2012); dane = iii.getExtras();
dane.putFloat( zm2 , 0.9); int zm1 = dane.getInt( zm1 );
iii.putExtras(dane); float zm2 = dane.getInt( zm2 );
startActivityForResult(iii, 123); ...
} // ... oblicz wynik
...
@Override dane.putFloat( wynik , wynik);
protected void onActivityResult(int reqID, iii.putExtras(dane);
int resC,
setResult(Activity.RESULT_OK, iii);
Intent ii) {
finish();
if (resC == Activity.RESULT_OK && reqID == 123) {
}
Bundle dane = new Bundle();
dane = ii.getExtras();
Double wynik = d.getDouble( wynik );
//... i tak dalej
}
else {
// obsłuż inne przypadki
}
}
© maf 35
Mariusz FraÅ›
Instytut Informatyki
Politechnika Wrocławska
Wyszukiwarka
Podobne podstrony:
SWch(full permission)
SWeh(full permission)
SWch(full permission)
SWb(full permission)
SWah(full permission)
SWc(full permission)
SWch(full permission)
SW b(full permission)
SWeh(full permission)
SWeh(full permission)
SWd(full permission)
SWah(full permission)
SWah(full permission)
wyklada ekosystem ziemi(full permission)
7 Prezentacje(full permission)
10 Konstrukcja blachowa(full permission)
5 Dokumentacja płaska(full permission)
wyklada cykl c n s(full permission)
12 Generator ram(full permission)
więcej podobnych podstron