Memulai aktivitas lain

Setelah menyelesaikan pelajaran sebelumnya, Anda memiliki aplikasi yang menampilkan aktivitas (satu layar) dengan satu kolom teks dan satu tombol. Dalam pelajaran ini, Anda akan menambahkan beberapa kode ke MainActivity yang memulai aktivitas baru untuk menampilkan pesan saat pengguna menge-tap Send.

Catatan: Pelajaran ini merekomendasikan Anda untuk menggunakan Android Studio 3.0 atau yang lebih tinggi.

Merespons tombol send

Tambahkan sebuah metode ke kelas MainActivity yang dipanggil oleh tombol dengan cara berikut:

  1. Di file app > java > com.example.myfirstapp > MainActivity, tambahkan stub metode sendMessage() seperti yang ditunjukkan di bawah ini:

    Kotlin

    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
        }
    
        /** Called when the user taps the Send button */
        fun sendMessage(view: View) {
            // Do something in response to button
        }
    }
    

    Java

    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        /** Called when the user taps the Send button */
        public void sendMessage(View view) {
            // Do something in response to button
        }
    }
    

    Anda mungkin melihat error karena Android Studio tidak bisa menyelesaikan kelas View yang digunakan sebagai argumen metode. Klik untuk menempatkan kursor Anda pada deklarasi View, kemudian lakukan Quick Fix dengan menekan Alt + Enter (atau Option + Enter pada Mac). (Bila muncul menu, pilih Import class.)

  2. Sekarang kembali ke file activity_main.xml untuk memanggil metode ini dari tombol:
    1. Klik untuk memilih tombol di Layout Editor.
    2. Di jendela Attributes, cari properti onClick dan pilih sendMessage [MainActivity] dari menu drop-down.

Sekarang saat tombol di-tap, sistem akan memanggil metode sendMessage().

Perhatikan detail yang diperlukan dalam metode ini agar sistem bisa mengenalinya sesuai dengan atribut android:onClick. Secara khusus, metode ini memiliki karakteristik sebagai berikut:

  • Akses publik
  • Void atau, di Kotlin, nilai pengembalian unit implisit
  • Sebuah View sebagai satu-satunya parameter (ini adalah objek View yang diklik)

Berikutnya, Anda perlu mengisi metode ini untuk membaca konten kolom teks dan mengirimkan teks itu ke aktivitas lain.

Membangun Intent

Intent adalah objek yang menyediakan waktu proses yang mengikat komponen-komponen terpisah, misalnya dua aktivitas. Intent menyatakan "intent untuk melakukan sesuatu" dari aplikasi. Anda bisa menggunakan intent untuk berbagai jenis tugas, tetapi dalam pelajaran ini, intent Anda akan memulai aktivitas lain.

Di MainActivity, tambahkan konstanta EXTRA_MESSAGE dan kode sendMessage(), seperti yang ditunjukkan di sini:

Kotlin

const val EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    /** Called when the user taps the Send button */
    fun sendMessage(view: View) {
        val editText = findViewById<EditText>(R.id.editText)
        val message = editText.text.toString()
        val intent = Intent(this, DisplayMessageActivity::class.java).apply {
            putExtra(EXTRA_MESSAGE, message)
        }
        startActivity(intent)
    }
}

Java

public class MainActivity extends AppCompatActivity {
    public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user taps the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.editText);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

Android Studio kembali menjumpai error Cannot resolve symbol, jadi tekan Alt + Enter (atau Option + Return pada Mac). Impor Anda akan terlihat seperti berikut:

Kotlin

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.EditText

Java

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

Error tetap terjadi untuk DisplayMessageActivity, tetapi itu bukan masalah; Anda akan memperbaikinya di bagian berikutnya.

Inilah yang terjadi di sendMessage():

  • Konstruktor Intent membutuhkan dua parameter:
    • Context sebagai parameter pertama (this digunakan karena kelas Activity merupakan subkelas dari Context)
    • Class komponen aplikasi yang menjadi target sistem dalam mengirimkan Intent (dalam hal ini, aktivitas yang harus dimulai).
  • Metode putExtra() menambahkan nilai EditTextke intent. Sebuah Intent bisa membawa tipe data sebagai pasangan nilai-kunci bernama extras. Kunci Anda adalah konstanta publik EXTRA_MESSAGE karena aktivitas berikutnya menggunakan kunci untuk mendapatkan kembali nilai teks. Cara terbaik mendefinisikan kunci untuk ekstra intent adalah menggunakan nama paket aplikasi Anda sebagai awalan. Ini akan memastikan kunci itu unik, seandainya aplikasi Anda berinteraksi dengan aplikasi lain.
  • Metode startActivity() memulai instance DisplayMessageActivity yang ditetapkan oleh Intent. Sekarang Anda perlu membuat kelas tersebut.

Komponen Arsitektur Navigasi, saat ini dalam versi alfa, memungkinkan Anda untuk menggunakan Editor Navigasi untuk mengaitkan satu aktivitas dengan aktivitas lainnya. Setelah hubungan terbentuk, Anda dapat menggunakan API untuk memulai aktivitas kedua saat pengguna memicu tindakan terkait (mis. mengklik tombol). Untuk mempelajari lebih lanjut, lihat Komponen Arsitektur Navigasi.

Membuat aktivitas kedua

  1. Di jendela Project, klik kanan folder app dan pilih New > Activity > Empty Activity.
  2. Di jendela Configure Activity, masukkan "DisplayMessageActivity" untuk Activity Name dan klik Finish (biarkan semua properti lain disetel ke default).

Android Studio secara otomatis melakukan tiga hal:

  • Membuat file DisplayMessageActivity.
  • Membuat file layout activity_display_message.xml yang sesuai.
  • Menambahkan elemen <activity> yang diperlukan di AndroidManifest.xml.

Jika Anda menjalankan aplikasi dan menge-tap tombol pada aktivitas pertama, aktivitas kedua akan dimulai tetapi kosong. Hal ini karena aktivitas kedua menggunakan layout kosong yang disediakan oleh template.

Menambahkan tampilan teks

Gambar 1. Tampilan teks yang ditempatkan di tengah bagian atas layout

Activity baru ini berisi file layout kosong, jadi sekarang Anda perlu menambahkan tampilan teks tempat pesan akan muncul.

  1. Buka file app > res > layout > activity_display_message.xml.
  2. Klik Turn On Autoconnect di toolbar (akan segera diaktifkan, seperti yang ditunjukkan pada gambar 1).
  3. Di jendela Pallete, klik Text kemudian seret TextView ke dalam layout—lepaskan di dekat atas-tengah layout agar berada di haris vertikal yang ditampilkan. Autoconnect menambahkan pembatas kiri dan kanan untuk menempatkan tampilan di tengah-tengah posisi horizontal.
  4. Buat satu pembatas lagi dari bagian atas tampilan teks ke bagian atas layout, sehingga tampak seperti yang ditunjukkan pada gambar 1.

Opsional, buat beberapa penyesuaian pada gaya teks dengan memperluas textAppearance di jendela Attributes dan mengubah atribut seperti textSize dan textColor.

Menampilkan pesan

Sekarang Anda akan memodifikasi aktivitas kedua untuk menampilkan pesan yang diteruskan oleh aktivitas pertama.

  1. Di DisplayMessageActivity, tambahkan kode berikut ke metode onCreate():

    Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_display_message)
        
        // Get the Intent that started this activity and extract the string
        val message = intent.getStringExtra(EXTRA_MESSAGE)
    
        // Capture the layout's TextView and set the string as its text
        val textView = findViewById<TextView>(R.id.textView).apply {
            text = message
        }
    }
    

    Java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message);
        
        // Get the Intent that started this activity and extract the string
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    
        // Capture the layout's TextView and set the string as its text
        TextView textView = findViewById(R.id.textView);
        textView.setText(message);
    }
    
  2. Tekan Alt + Enter (atau Option + Return di Mac) untuk mengimpor kelas yang tidak ada. Impor Anda akan terlihat seperti berikut:

    Kotlin

    import android.content.Intent
    import android.support.v7.app.AppCompatActivity
    import android.os.Bundle
    import android.widget.TextView
    

    Java

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.TextView;
    

Menambahkan navigasi naik

Setiap layar di aplikasi Anda yang bukan titik masuk utama (semua layar yang bukan layar "utama") harus menyediakan navigasi sehingga pengguna bisa kembali ke layar induk logis sebelumnya dalam hierarki aplikasi dengan menge-tap tombol Up di bilah aplikasi.

Yang perlu Anda lakukan adalah mendeklarasikan aktivitas yang akan menjadi induk logis di file AndroidManifest.xml. Jadi buka file app > manifests > AndroidManifest.xml, cari tag <activity> untuk DisplayMessageActivity dan ganti dengan kode berikut:

<activity android:name=".DisplayMessageActivity"
          android:parentActivityName=".MainActivity">
    <!-- The meta-data tag is required if you support API level 15 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity" />
</activity>

Sekarang sistem Android akan secara otomatis menambahkan tombol Up di bilah aplikasi.

Menjalankan aplikasi

Sekarang jalankan kembali aplikasi dengan mengklik Apply Changes di toolbar. Ketika terbuka, ketik pesan di kolom teks, dan tap Send untuk memunculkan pesan dalam aktivitas kedua.

Gambar 2. Screenshot dari kedua aktivitas

Selamat, Anda sudah membuat aplikasi Android pertama Anda!

Untuk terus mempelajari dasar-dasar pengembangan aplikasi Android, ikuti tautan lain yang disediakan di halaman depan tutorial ini.