4. diel - Android Intent a aktivity - SumResultActivity
V minulej lekcii, Android Intent a aktivity - SumActivity - Java kód , sme napísali Java kód s implicitným Intent pre otvorenie ďalšie aktivity.
Dnes vytvoríme aktivitu SumResultActivity
, do ktorej budeme z
aktivity SumActivity
odosielať dve čísla. Tieto dve čísla tu
sčítame a odošleme späť do aktivity SumActivity
, ktorá bude
našu odpoveď očakávať.
Vytvorenie
SumResultActivity
Podobne, ako sme vytvárali aktivitu SumActivity
, vytvoríme aj
SumResultActivity
. Klikneme pravým tlačidlom na priečinok
projektu so súbormi s Java kódom a ďalej v menu na New -> Activity
-> Empty Activity.
V otvorenom okne do poľa Activity Name napíšeme
SumResultActivity
, zaškrtneme Generate Layout File a do
poľa Layout Name napíšeme sum_result_activity
. Potom
okno zavrieme tlačidlom Finish.
Android Studio vygeneruje súbory SumResultActivity.java
a
sum_result_activity.xml
.
sum_result_activity.xml
Obsah súboru sum_result_activity.xml
upravíme do nasledujúcej
podoby, ktorú si vzápätí popíšeme:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp"> <Button android:id="@+id/btnSend" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="@string/sum_result_activity_button" android:textAllCaps="false" /> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/btnSend"> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/cLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="10dp"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sum_result_activity_title" android:textSize="30sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="@string/sum_activity_desc" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:text="@string/sum_result_activity_number_one" app:layout_constraintEnd_toStartOf="@+id/labelNumber1" app:layout_constraintTop_toBottomOf="@id/textView2" /> <TextView android:id="@+id/textView7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:text="@string/sum_result_activity_number_two" app:layout_constraintEnd_toStartOf="@+id/guideline" app:layout_constraintTop_toBottomOf="@+id/textView6" /> <TextView android:id="@+id/labelNumber1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:textColor="@android:color/black" app:layout_constraintBaseline_toBaselineOf="@+id/textView6" app:layout_constraintStart_toStartOf="@+id/guideline" /> <TextView android:id="@+id/labelNumber2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:textColor="@android:color/black" app:layout_constraintBaseline_toBaselineOf="@+id/textView7" app:layout_constraintStart_toStartOf="@+id/guideline" /> <TextView android:id="@+id/textView10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:text="@string/sum_result_activity_total_sum" app:layout_constraintEnd_toStartOf="@+id/guideline" app:layout_constraintTop_toBottomOf="@+id/textView7" /> <TextView android:id="@+id/labelResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:textColor="@android:color/black" app:layout_constraintBaseline_toBaselineOf="@+id/textView10" app:layout_constraintStart_toStartOf="@+id/guideline" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.5" /> </androidx.constraintlayout.widget.ConstraintLayout> </ScrollView> </RelativeLayout>
Konštanty použitých textov
Súbor res/values/strings.xml
doplníme o ďalšie položky s
textami použitými v projekte:
<string name="sum_result_activity_title">Součet čísel</string> <string name="sum_result_activity_number_1">První přijaté číslo:</string> <string name="sum_result_activity_number_2">Druhé přijaté číslo:</string> <string name="sum_result_activity_total_sum">Součet přijatých čísel:</string> <string name="sum_result_activity_button">Odeslat součet</string>
Konštanty použitých farieb
V XML návrhu aktivity SumResultActivity
používame jedinú
"farebnú" konštantu v riadkoch nastavujúce farbu textu
android:textColor="@android:color/black"
. Konštantu
@android:color/black
ale nemáme deklarovanú v príslušnom
súbore. Ide totiž o defaultný konštantu Androidu.
V XML návrhu aktivity SumResultActivity
máme opäť
navigačné tlačidlo, ako bolo u SumActivity
, a potom vlastne len
niekoľko komponentov <TextView>
. Výstup XML kódu bude
vyzerať takto:
Otvorená aktivita zobrazí prijaté čísla a pod nimi ich súčet.
Kliknutím na tlačidlo Odoslať súčet túto aktivitu zavrieme a
zároveň tým odošleme intent s dátami, obsahujúcimi aktivitou
SumActivity
očakávaný súčet čísel.
Pri pohľade do XML návrhu si opäť môžeme všimnúť absencia atribútu
android:onClick
. To znamená, že opäť budeme obsluhu udalosti
kliknutí na tlačidlo riešiť Java kódom, ale, pre zmenu, iným spôsobom,
než v predchádzajúcej lekcii s aktivitou SumActivity
.
V kóde asi nie je nič moc ďalšieho, čo by stálo za zmienku, preto
ponechajme túto lekciu kratšia a na Java kód SumResultActivity
si vyčleňte samostatnú lekciu.
V budúcej lekcii, Android Intent a aktivity - Java kód SumResultActivity , si ukážeme Java kód aktivity
SumResultActivity
a hlavne to najzaujímavejšie - spôsob príjmu
dát z aktivity SumActivity
a odoslanie odpovede s výsledkom.