Tugas 1. Membuat proyek TwoActivities
- Buka
res/layout/activity_main.xml
. Pada Layout Editor, klik tab Design di bagian bawah layar dan Hapus TextView yang berbunyi “Hello World.” - Tambahkan Tombol ke layout dalam posisi apa pun.
Beralih ke XML Editor (klik tab Text) dan modifikasi atribut ini di dalam Tombol:
Atribut Nilai android:id “@+id/button_main” android:layout_width wrap_content android:layout_height wrap_content android:layout_alignParentRight “true” android:layout_alignParentBottom “true” android:layout_alignParentEnd “true” android:text “Send” android:onClick “launchSecondActivity” - Letakkan kursor pada kata
"Send"
. Tekan Alt-Enter, dan pilih Extract string resources. Setel nama Sumber Daya kebutton_main
dan klik OK. - hasil penggantian nama send tdi di string.xml
1.3 Mendefinisikan tindakan tombol
- Dalam Editor XML, letakkan kursor pada kata
"launchSecondActivity"
. -
Tekan Alt-Enter (Option-Enter di Mac) dan pilih Create ‘launchSecondActivity(View)’ dalam ‘MainActivity.
File MainActivity.java terbuka, dan Android Studio membuat metode kerangka untuk handler onClick.
-
Dalam
launchSecondActivity
, tambahkan pernyataan log yang bernama “Button Clicked!”Log.d(LOG_TAG, "Button clicked!");
LOG_TAG akan terlihat berwarna merah. Definisi untuk variabel tersebut akan ditambahkan dalam langkah selanjutnya.
- Tempatkan kursor pada kata “Log” dan tekan Alt-Enter (Option-Enter di Mac). Android Studio menambahkan pernyataan impor untuk android.util.Log.
-
Di bagian atas kelas, tambahkan konstanta untuk variabel LOG_TAG:
private static final String LOG_TAG = MainActivity.class.getSimpleName();
Konstanta ini menggunakan nama kelas itu sendiri sebagai tag-nya.
- Jalankan aplikasi Anda. Saat mengeklik tombol “Send”, Anda akan melihat pesan “Button Clicked!” di Android Monitor (logcat). Jika ada terlalu banyak keluaran di monitor, ketik MainActivity di dalam kotak pencarian dan log hanya akan menunjukkan baris yang cocok dengan tag tersebut.
Tugas 2. Membuat dan meluncurkan aktivitas kedua
- Klik folder app untuk proyek Anda dan pilih File > New > Activity > Empty Activity.
- Namakan aktivitas baru “SecondActivity.” Pastikan Generate Layout File dicentang, dan nama layout akan diisi dengan activity_second.
- Klik Finish. Android Studio menambahkan layout aktivitas baru (activity_second) dan file Java baru (SecondActivity) ke proyek Anda untuk aktivitas baru tersebut. Ini juga akan memperbarui manifes Android untuk menyertakan aktivitas baru.
2.2 Memodifikasi manifes Android
- Buka
manifests/AndroidManifest.xml
. - Temukan elemen
<activity>
yang dibuat Android Studio untuk aktivitas kedua.<activity android:name=".SecondActivity"></activity>
-
Tambahkan atribut ini ke elemen
<activity>
:Atribut Nilai android:label “Second Activity” android:parentActivityName “.MainActivity” Atribut
label
menambahkan judul aktivitas ke bilah tindakan.Atribut
parentActivityName
menandakan bahwa aktivitas utama adalah induk aktivitas kedua. Hubungan aktivitas induk ini digunakan untuk navigasi “ke atas” di dalam aplikasi Anda. Dengan mendefinisikan atribut ini, bilah tindakan untuk aktivitas kedua akan muncul dengan panah yang menghadap ke kiri untuk memungkinkan pengguna untuk bergerak “ke atas” ke aktivitas utama. - Tempatkan kursor di “Second Activity” dan tekan Alt-Enter (Option-Enter di Mac).
- Pilih Extract string resource, namakan sumber daya “activity2_name”, dan klik OK. Android Studio menambahkan sumber daya string untuk label aktivitas.
- Buka
Tambahkan elemen <meta-data>
element inside the <activity>
di dalam elemen untuk aktivitas kedua. Gunakan atribut ini:
Atribut | Nilai |
android:name | “android.support.PARENT_ACTIVITY” |
android:value | “com.example.android.twoactivities.MainActivity” |
Elemen <meta-data>
menyediakan informasi arbitrer tambahan tentang aktivitas sebagai pasangan kunci-nilai. Dalam hal ini, atribut ini mencapai hal yang sama dengan atribut android:parentActivityName, yakni mendefinisikan hubungan antara dua aktivitas untuk tujuan navigasi ke atas. Atribut ini diperlukan untuk versi Android lebih lama. android:parentActivityName hanya tersedia untuk API level 16 dan yang lebih tinggi.
2.3 Mendefinisikan layout untuk aktivitas utama
Buka res/layout/activity_second.xml
.
Tambahkan TextView (“Plain Textview” dalam Layout Editor). Berikan atribut berikut pada TextView:
Atribut | Nilai |
android:id | “@+id/text_header” |
android:layout_width | wrap_content |
android:layout_height | wrap_content |
android:layout_marginBottom | “@dimen/activity_vertical_margin” |
android:text | “Message Received” |
android:textAppearance | “?android:attr/textAppearanceMedium” |
android:textStyle | “bold” |
Nilai textAppearance adalah atribut bertema Android yang mendefinisikan gaya font dasar font kecil, medium, dan besar. Anda akan mempelajari selengkapnya tentang tema pada pelajaran berikutnya.
Ekstrak string “Message Received” ke sumber daya bernama text_header.
2.4 Menambahkan intent ke aktivitas utama
- Buka file Java untuk
MainActivity
(java/com.example.android.twoactivities/MainActivity). - Buat intent baru dalam metode
launchSecondActivity()
. - Konstruktor intent memerlukan dua argumen untuk intent eksplisit: konteks Aplikasi dan komponen spesifik yang akan menerima intent tersebut. Di sini Anda harus menggunakan
this
sebagai konteksmya, danSecondActivity.class
sebagai kelas spesifiknya.
Intent intent = new Intent(this, SecondActivity.class);
Tempatkan kursor di intent dan tekan Alt-Enter (Option-Enter di Mac) untuk menambahkan impor ke kelas intent.
- Panggil metode startActivity() dengan intent baru sebagai argumennya.
startActivity(intent);
-
Jalankan aplikasi.
Saat mengeklik tombol Send, aktivitas utama mengirim intent dan sistem Android membuka aktivitas kedua. Aktivitas kedua muncul di layar. Untuk kembali ke aktivitas utama, klik tombol Kembali Android di kiri bawah layar, Anda bisa menggunakan panah kiri di atas aktivitas kedua untuk kembali ke aktivitas utama.
Tugas 3. Mengirim data dari aktivitas utama ke aktivitas kedua
3.1 Menambahkan EditText ke layout aktivitas utama
- Buka res/layout/activity_main.xml.
-
Tambahkan tampilan EditText (Plain Text dalam Layout Editor.) Berikan EditText atribut berikut:
Atribut Nilai android:id “@+id/editText_main” android:layout_width match_parent android:layout_height wrap_content android:layout_toLeftOf “@+id/button_main” android:layout_toStartOf “@+id/button_main” android:layout_alignParentBottom “true” android:hint “Enter Your Message Here” - Ekstrak string “Enter Your Message Here” ke sumber daya bernama editText_main.
3.2 Menambahkan string ke ekstra intent aktivitas utama
- Buka
java/com.example.android.twoactivities/MainActivity
. - Tambahkan konstanta publik di bagian atas kelas untuk mendefinisikan kunci untuk ekstra intent:
public static final String EXTRA_MESSAGE = "com.example.android.twoactivities.extra.MESSAGE";
- Tambahkan variabel privat di bagian atas kelas untuk menampung objek EditText. Mengimpor kelas EditText.
private EditText mMessageEditText;
- Dalam metode onCreate(), gunakan findViewByID untuk mendapatkan referensi tentang contoh EditText dan menetapkannya ke variabel privat tersebut:
mMessageEditText = (EditText) findViewById(R.id.editText_main);
- Dalam metode launchSecondActivity(), di bawah intent baru, dapatkan teks dari EditText sebagai string:
String message = mMessageEditText.getText().toString();
- Tambahkan string tersebut ke intent sebagai sebuah ekstra dengan konstanta EXTRA_MESSAGE sebagai kunci dan string-nya sebagai nilai:
intent.putExtra(EXTRA_MESSAGE, message);
3.3 Menambahkan TextView ke aktivitas kedua untuk pesan
- Buka
res/layout/activity_second.xml
. -
Tambahkan TextView kedua. Berikan atribut berikut pada TextView:
Atribut Nilai android:id “@+id/text_message” android:layout_width wrap_content android:layout_height wrap_content android:layout_below “@+id/text_header” android:layout_marginLeft “@dimen/activity_horizontal_margin” android:layout_marginStart “@dimen/activity_horizontal_margin” android:textSize “?android:attr/textAppearanceMedium”
3.4 Memodifikasi aktivitas kedua untuk mendapatkan ekstra dan menampilkan pesan
- Buka
java/com.example.android.twoactivities/SecondActivity
. - Dalam metode
onCreate()
, dapatkan intent yang mengaktifkan aktivitas ini:Intent intent = getIntent();
- Dapatkan string berisi pesan dari ekstra intent menggunakan variabel statis
MainActivity.EXTRA_MESSAGE
sebagai kuncinya:String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
- Gunakan findViewByID untuk mendapatkan referensi ke TextView untuk pesan dari layout (Anda mungkin perlu mengimpor kelas TextView):
TextView textView = (TextView) findViewById(R.id.text_message);
- Setel teks TextView tersebut ke string dari ekstra intent:
textView.setText(message);
- Jalankan aplikasi. Saat Anda mengetik pesan dalam aktivitas utama dan mengeklik Send, aktivitas kedua terbuka dan menampilkan pesan tersebut.
Jalankan aplikasi. Saat Anda mengetik pesan dalam aktivitas utama dan mengeklik Send, aktivitas kedua terbuka dan menampilkan pesan tersebut.
Tugas 4. Mengembalikan data ke aktivitas utama
4.1 Menambahkan EditText dan Tombol ke layout aktivitas kedua
- Salin EditText dan Tombol dari file layout aktivitas utama dan tempel ke layout kedua.
-
Dalam file activity_second.xml, modifikasi nilai atribut untuk Tombol dan tampilan EditText. Gunakan nilai ini:
Atribut Lama (Tombol) Atribut Baru (Tombol) android:id=”@+id/button_main” android:id=”@+id/button_second” android:onClick= “launchSecondActivity” android:onClick=”returnReply” android:text= “@string/button_main” android:text= “@string/button_second” Atribut Lama (EditText) Atribut Baru (EditText) android:id=”@+id/editText_main” android:id=”@+id/editText_second” android:layout_toLeftOf= “@+id/button_main” android:layout_toLeftOf= “@+id/button_second” android:layout_toStartOf= “@+id/button_main” android:layout_toStartOf= “@+id/button_second” android:hint= “@string/editText_main” android:hint= “@string/editText_second” Buka
res/values/strings.xml
dan tambahkan sumber daya String untuk teks tombol dan petunjuknya di EditText:<string name="button_second">Reply</string> <string name="editText_second">Enter Your Reply Here</string>
Dalam editor layout XML, letakkan kursor pada
"returnReply"
, tekan Alt-Enter (Option-Enter di Mac) dan pilih Create ‘launchSecondActivity(View)’ dalam ‘SecondActivity’.
4.2 Membuat intent respons dalam aktivitas kedua
- Buka
java/com.example.android.twoactivities/SecondActivity
. - Di atas kelas, tambahkan konstanta publik untuk mendefinisikan kunci untuk ekstra intent:
public static final String EXTRA_REPLY = "com.example.android.twoactivities.extra.REPLY";
- Tambahkan variabel privat di bagian atas kelas untuk menampung objek EditText.
private EditText mReply;
- Dalam metode onCreate(), gunakan findViewByID() untuk mendapatkan referensi tentang contoh EditText dan menetapkannya ke variabel privat tersebut:
mReply = (EditText) findViewById(R.id.editText_second);
- Dalam metode
returnReply()
, dapatkan teks EditText sebagai string:String reply = mReply.getText().toString();
- Membuat intent baru untuk respons tersebut.
Catatan: Jangan gunakan ulang objek intent yang diterima dari permintaan asalnya. Buat intent baru untuk respons tersebut.
Intent replyIntent = new Intent();
- Tambahkan string balasan dari EditText ke intent baru sebagai ekstra intent. Karena ekstra adalah pasangan kunci/nilai, di sini kuncinya adalah EXTRA_REPLY dan nilainya adalah balasan:
replyIntent.putExtra(EXTRA_REPLY, reply);
- Setel hasilnya ke
RESULT_OK
untuk menunjukkan bahwa responsnya berhasil. Kode hasil (termasuk RESULT_OK dan RESULT_CANCELLED) didefinisikan oleh kelas Aktivitas.setResult(RESULT_OK,replyIntent);
- Panggil
finish()
untuk menutup aktivitas dan kembali ke aktivitas utama.finish();
4.3 Menambahkan TextViews ke layout aktivitas utama untuk menampilkan balasan
- Salin dua TextViews untuk tampilan pesan dari file layout aktivitas kedua dan tempel ke layout utama di atas EditText yang ada dan tampilan Tombol.
-
Modifikasi nilai atribut untuk kedua TextViews baru ini. Gunakan nilai ini:
Atribut Lama (header TextView) Atribut Baru (header TextView) android:id=”@+id/text_header” android:id=”@+id/text_header_reply” android:text=”@string/text_header” android:text= “@string/text_header_reply” Atribut Lama (TextView pesan) Atribut Baru (TextView pesan) android:id=”@+id/text_message” android:id=”@+id/text_message_reply” android:layout_below= “@+id/text_header” android:layout_below= “@+id/text_header_reply”
4.4 Mendapatkan balasan dari ekstra intent dan menampilkannya
- Buka
java/com.example.android.twoactivities/MainActivity
. - Tambahkan konstanta publik di bagian atas kelas untuk mendefinisikan kunci untuk tipe respons tertentu yang Anda inginkan:
public static final int TEXT_REQUEST = 1;
- Tambahkan dua variabel privat untuk menampung header balasan dan TextViews balasan:
private TextView mReplyHeadTextView; private TextView mReplyTextView;
- dalam metode onCreate(), gunakan findViewByID untuk mendapatkan referensi dari layout ke header balasan dan TextView balasan. Tetapkan dua contoh tampilan ke variabel privat:
mReplyHeadTextView = (TextView) findViewById(R.id.text_header_reply); mReplyTextView = (TextView) findViewById(R.id.text_message_reply);
- Dalam metode
launchSecondActivity()
, modifikasi panggilan kestartActivity(
) menjadistartActivityForResult()
, dan sertakan kunciTEXT_REQUEST
sebagai argumen:startActivityForResult(intent, TEXT_REQUEST);
- Buat metode callback
onActivityResult()
dengan tanda tangan ini:public void onActivityResult(int requestCode, int resultCode, Intent data) {}
- Dalam onActivityResult(), panggil
super.onActivityResult()
:super.onActivityResult(requestCode, resultCode, data);
- Tambahkan kode untuk
TEXT_REQUEST
(untuk memproses hasil intent yang benar, jika ada beberapa) danRESULT_CODE
(untuk memastikan permintaannya sukses):if (requestCode == TEXT_REQUEST) { if (resultCode == RESULT_OK) { } }
- Di bagian dalam blok if, dapatkan ekstra intent dari intent respons (
data
). Di sini, kunci untuk ekstra adalah konstanta EXTRA_REPLY dari SecondActivity:String reply = data.getStringExtra(SecondActivity.EXTRA_REPLY);
- Setel; visibilitas header balasan ke benar:
mReplyHeadTextView.setVisibility(View.VISIBLE);
- Setel teks textview balasan ke balasan, dan setel visibilitasnya ke benar:
mReplyTextView.setText(reply); mReplyTextView.setVisibility(View.VISIBLE);
-
Jalankan aplikasi.
Sekarang, saat Anda mengirimkan pesan ke aktivitas kedua dan mendapatkan balasan kembali, aktivitas utama diperbarui untuk menampilkan balasan.