Lesson 2: Activities and Intens
BAGIAN 2.1: Activities and Intens
1.1 Create the TwoActivities project
Kita akan membuat project baru dengan nama project ‘Two Activity’. Buka file-> new project -> Empty Activity
Nama project TwoActivities, kemudian klik finish
1.2 Define the layout for the main Activity
Buka res > layout > activity_main.xml
Hapus Text View (Tulisan Hello World) -> Drag Button -> Constraint Button -> Ganti Nama Button Menjadi ‘SEND’ -> kemudian ganti nama ID menjadi ‘button_main’
Pindah ke tab text -> Kemudian tambahkan kodingan android:onClick="LaunchSecondActivity"
- 3 Define the Button action
Pada task LaunchSendActivity() yang sudah di koding tadi -> klik alt+enter -> kemudian muncul beberapa opsi pilih Create ‘launchSecondActivity(View)’ in ‘MainActivity. -> lalu sesuaikan kodingan sesuai petunjuk
Hasil setelah di run
Task 2: Create and launch the second Activity
2.1 Create the second Activity
Buat second project sepert diawal dengan nama project ‘activity_second’
Pilih new -> activity -> Empty activity.
Beri nama ‘SecondActivity’
Pilih res -> layout -> activity_second
Pindah ke manifest -> klik 2x ‘AndroidManifest.xml’
2.2 Modify the AndroidManifest.xml file
Buka manifests > AndroidManifest.xml. Ikuti code seperti dipetunjuk.
Pada bagian Second Activity klik alt+enter -> pilih extract string resources
Beri resource namenya activity2_name
2.3 Define the layout for the second Activity
Buka activity_second.xml -> Pilih tab Design
Ikuti Langkah Berikut
Attribute
Value
id: text_header
Top margin: 16
Left margin: 8
layout_width : wrap_content
layout_height : wrap_content
text : Message Received
textAppearance :AppCompat.Medium
textStyle: B (bold)
Pindah ke tab text -> pada ‘Message Received’ klik alt+enter -> Lalu extract String Resources
Beri nama resources text_header
Masuk ke Main Activity -> Ikuti kodingan seperti dipetunjuk
Task 3: Send data from the main Activity to the second Activity
3.1 Add an EditText to the MainActivity layout
Buka activity_main.xml.
Pindah ke tab design -> ikuti atribut berikut:
Attribute
Value
id: editText_main
Right margin: 8
Left margin: 8
Bottom margin: 16
layout_width: match_constraint
layout_height: wrap_content
inputType: textLongMessage
hint: Enter Your Message Here
text: (Delete any text in this field)
Pindah ke tab text -> klik alt+enter pada tulisan Enter Your Massage Here -> Beri nama resource editText_main
3.2 Add a string to the Intent extras
Buka MainActivity, masukan kodingan sesuai petunjuk
Hasil Running
3.3 Add a TextView to SecondActivity for the message
Buka activity_second.xml
Set atribut text view seperti berikut:
Attribute
Value
id: text_message
Top margin: 8
Left margin: 8
layout_width : wrap_content
layout_height: wrap_content
text: (Delete any text in this field)
textAppearance: AppCompat.Medium
3.4 Modify SecondActivity to get the extras and display the message
Buka secondActivity -> ikuti petunjuk kodingan seperti dibawah ini.
Task 4: Return data back to the main Activity
4.1 Add an EditText and a Button to the SecondActivity layout
Buka strings.xml -> masukan string resources untuk button text dan masukan petunjuk untuk EditText yang akan dimasukan di SecondActivity
Buka activity_main.xml dan activity_second.xml -> Copy EditText
dan Button
dari activity_main.xml
layout file dan Paste ke activity_second.xml
layout.
Di activity_second.xml
, modifikasi attribute values untuk Button
, ikuti:
Old attribute value
New attribute value
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”
Untuk bagian Edit Text ikuti:
Old attribute value
New attribute value
android:id=”@+id/editText_main”
android:id=”@+id/editText_second”
app:layout_constraintEnd_toStartOf
=”@+id/button”
app:layout_constraintEnd_toStartOf
=”@+id/button_second”
android:hint=
“@string/editText_main”
android:hint=
“@string/editText_second”
Pada XML layout editor, click on returnReply, tekan Alt+Enter
(Option+Return
on a Mac), dan pilih Create 'returnReply(View)' in 'SecondActivity'.
4.2 Create a response Intent in the second Activity
Buka SecondActivity -> Ikuti langkah code seperti dipetunjuk
4.3 Add TextView elements to display the reply
Buka String.xml -> Buka activity_main.xml dan activity_second.xml. -> Copy two TextView
elements dari activity_second.xml
layout file dab paste ke activity_main.xml
layout diatas Button
Pada activity_main.xml
, modifikasi attribute values untuk TextView pertama
Old attribute value
New attribute value
android:id=”@+id/text_header”
android:id=”@+id/text_header_reply”
android:text=
“@string/text_header”
android:text=
“@string/text_header_reply”
Di activity_main.xml, modifikasi attribute values untuk second TextView Ikuti:
Old attribute value
New attribute value
android:id=”@+id/text_message”
android:id=
“@+id/text_message_reply”
app:layout_constraintTop_toBottomOf
=”@+id/text_header”
app:layout_constraintTop_toBottomOf
=”@+id/text_header_reply”
Masukan android:visibility=”invisible” Pada TextView
4.4 Get the reply from the Intent extra and display it
Buka mainActivity -> Masukan Kodingan seperti petunjuk
Run Aplikasi
BAGIAN 2.2 Activity lifecycle and state
Task 1: Add lifecycle callbacks to TwoActivities
1.2 Implement callbacks into MainActivity
Buka TwoActivities project di Android Studio, dan buka MainActivity di Project > Android pane.
Buat onCreate Methode
Log.d(LOG_TAG, “ — — — -”);
Log.d(LOG_TAG, “onCreate”);
Buka Code -> Methode -> Buat OnStart -> OnResume -> OnRestart -> OnStop
Cari Pada LogCat
D/MainActivity: — — — -
D/MainActivity: onCreate
D/MainActivity: onStart
D/MainActivity: onResume
1.3 Implement lifecycle callbacks in SecondActivity
-Buka secondActivity, masukan code berikut diatas override
private static final String LOG_TAG = SecondActivity.class.getSimpleName();
-Copy-Paste Log Cat sblumnya yang sudah dibuat di MainActivity
-Masukan statement ini pada return reply.
Log.d(LOG_TAG, “End SecondActivity”);
1.4 Observe the log as the app runs
Run Aplikasi
2.1 Save the Activity instance state with onSaveInstanceState()
Buka MainActivity -> masuka skeleton implementasikan dari onSaveInstanceState()
untuk Activity
, atau gunakan Code > Override Methods to insert a skeleton override. -> Masukan code sesuai Petunjuk
2.2 Restore the Activity instance state in onCreate()
Pada onCreate()
method, setelah View
variables di inisialisasi dengan findViewById()
, masukan test untuk memastikan savedInstanceState
tidak bernilai null -> Ikuti instruksi code sesuai petunjuk
3. Task 1: Create the project and layout
- 1 Buat Project baru bernama Implicit Intents
Buka app > res > values > strings.xml
Masukan code sebagai berikut
<string name=”edittext_uri”>http://developer.android.com</string>
<string name=”button_uri”>Open Website</string>
<string name=”edittext_loc”>Golden Gate Bridge</string>
<string name=”button_loc”>Open Location</string>
<string name=”edittext_share”>\’Twas brillig and the slithy toves</string>
<string name=”button_share”>Share This Text</string>
Ubah android.support.constraint.ConstraintLayout
menjadi LinearLayout
Tambahkan android:orientation
attribute dengan value "vertical"
. Tambahkan android:padding
attribute dengan the value "16dp"
.
Hapus Text View Hello Word!
Tambahkan set UI elements untuk layout untuk open website button. Kita butuh sebuah EditText element dan sebuah button element. Gunakan attribute value berikut
EditText attribute
Value
android:id “@+id/website_edittext”
android:layout_width “match_parent”
android:layout_height “wrap_content”
android:text “@string/edittext_uri”
Button attribute
Value
android:id “@+id/open_website_button”
android:layout_width “wrap_content”
android:layout_height “wrap_content”
android:layout_marginBottom “24dp”
android:text “@string/button_uri”
android:onClick “openWebsite”
EditText attribute
Value
android:id “@+id/location_edittext”
android:text “@string/edittext_loc”
Button attribute
Value
android:id “@+id/open_location_button”
android:text “@string/button_loc”
android:onClick “openLocation”
EditText attribute
Value
android:id “@+id/share_edittext”
android:text “@string/edittext_share”
Button attribute
Value
android:id “@+id/share_text_button”
android:text “@string/button_share”
android:onClick “shareText”
Task 2: Implement the Open Website button
2.1 Define openWebsite()
Klik "openWebsite"
pada activity_main.xml. Tekan Alt+Enter
(Option+Enter
on a Mac) dan pilih Create 'openWebsite(View)' in 'MainActivity. Ikuti source seperti dipetunjuk
Ikuti source code seperti dipetunjuk
Task 3: Implement the Open Location button
3.1 Define openLocation()
Click “openLocation” pada activity_main.xml XML code.
Tekan Alt+Enter (Option+Enter on a Mac) dan pilih Create ‘openLocation(View)’ pada MainActivity.
Ikuti source code seperti dipetunjuk
3.2 Add code to openLocation()
Ikuti source code seperti dipetunjuk
Task 4: Implement the Share This Text button
4.1 Define shareText()
Klik “shareText” in the activity_main.xml XML code.
Tekan Alt+Enter (Option+Enter on a Mac) dan pilih Create ‘shareText(View)’ pada MainActivity.
Ikuti Source Code Seperti dipetunjuk
4.2 Add code to shareText()
Ikuti source code seperti petunjuk
public void shareText(View view) { String txt = mShareTextEditText.getText().toString(); String mimeType = "text/plain"; ShareCompat.IntentBuilder .from(this) .setType(mimeType) .setChooserTitle(R.string.app_name) .setText(txt) .startChooser();
Task 5: Receive an implicit Intent
5.1 Create the project and layout
Buat project baru dengan nama Implicit Intents Receiver
Buka activityMain.xml. Tambahkan attribute berikut:
Attribute
Value
android:id “@+id/text_uri_message”
android:textSize “18sp”
android:textStyle “bold”
5.2 Modify AndroidManifest.xml to add an Intent filter
Buka AndroidManifest.xml
file. Ikuti source code seperti dipetunjuk
5.3 Process the Intent
Buka Main Activity
5.4 Run both apps
Run the Implicit Intents Receiver app.