Lekce 5 - Android Intenty a aktivity - SumResultActivity
V minulé lekci, Android Intenty a aktivity - Odpověď od zavřené aktivity, jsme si ukázali, jak získat požadovanou odpověď ze zavřené aktivity, kterou jsme předtím otevřeli.
Dnes vytvoříme aktivitu SumResultActivity
, do které budeme z
aktivity SumActivity
odesílat dvě čísla. Tato dvě čísla zde
sečteme a odešleme zpět do aktivity SumActivity
, která bude
naši odpověď očekávat.
Vytvoření
SumResultActivity
Podobně, jako jsme vytvářeli aktivitu SumActivity
,
vytvoříme i SumResultActivity
. Klikneme pravým tlačítkem na
složku projektu se soubory s Java kódem a dále v menu na New ->
Activity -> Empty Activity.
V otevřeném okně do pole Activity Name napíšeme
SumResultActivity
, zaškrtneme Generate Layout File a do
pole Layout Name napíšeme sum_result_activity
. Poté
okno zavřeme tlačítkem Finish.
Android Studio vygeneruje soubory SumResultActivity.java
a
sum_result_activity.xml
.
sum_result_activity.xml
Obsah souboru sum_result_activity.xml
upravíme do
následující podoby, kterou si záhy 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>
Konstanty použitých textů
Soubor res/values/strings.xml
doplníme o další položky s
texty použitými v projektu:
<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>
Konstanty použitých barev
V XML návrhu aktivity SumResultActivity
používáme jedinou
"barevnou" konstantu v řádcích nastavujících barvu textu
android:textColor="@android:color/black"
. Konstantu
@android:color/black
ale nemáme deklarovanou v příslušném
souboru. Jde totiž o defaultní konstantu Androidu.
V XML návrhu aktivity SumResultActivity
máme opět navigační
tlačítko, jako bylo u SumActivity
, a pak vlastně jen několik
komponent <TextView>
. Výstup XML kódu bude vypadat
takto:
Otevřená aktivita zobrazí přijatá čísla a pod nimi jejich součet.
Kliknutím na tlačítko Odeslat součet tuto aktivitu zavřeme a
zároveň tím odešleme intent s daty, obsahujícími aktivitou
SumActivity
očekávaný součet čísel.
Při pohledu do XML návrhu si opět můžeme všimnout absence atributu
android:onClick
. To znamená, že opět budeme obsluhu události
kliknutí na tlačítko řešit Java kódem, ale, pro změnu, jiným způsobem,
než v předchozí lekci s aktivitou SumActivity
.
V kódu asi není nic moc dalšího, co by stálo za zmínku, proto ponechme
tuto lekci kratší a na Java kód SumResultActivity
si vyčleňme
samostatnou lekci.
V příští lekci, Android Intenty a aktivity - Java kód SumResultActivity, si ukážeme Java kód aktivity
SumResultActivity
a hlavně to nejzajímavější - způsob
příjmu dat z aktivity SumActivity
a odeslání odpovědi s
výsledkem.