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.

