Widya Ayu Agustania
9 min readJan 26, 2019

--

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"
  1. 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. 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.

--

--