Bagian pelajaran ini mengajarkan Anda cara
Setelah menyelesaikan pelajaran sebelumnya, Anda memiliki aplikasi yang
menampilkan aktivitas (satu layar) dengan satu bidang teks dan satu tombol. Dalam pelajaran ini, Anda akan menambahkan beberapa
kode ke MainActivity yang
memulai aktivitas baru bila pengguna mengeklik tombol Send.
Merespons Tombol Send
- Di file res > layout > activity_main.xml, tambahkan atribut
android:onClickke elemen<Button>seperti yang ditampilkan di bawah ini:<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" />Atribut ini memberi tahu sistem untuk memanggil metode
sendMessage()di aktivitas Anda setiap saat pengguna mengeklik tombol. - Di file java > com.example.myfirstapp > MainActivity.java,
tambahkan stub metode
sendMessage()seperti yang ditunjukkan di bawah:public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** Called when the user clicks the Send button */ public void sendMessage(View view) { // Do something in response to button } }Agar sistem dapat mencocokkan metode ini dengan nama metode yang diberikan pada
android:onClick, tanda tangan harus sama dengan yang ditampilkan. Khususnya, metode ini harus:
Berikutnya, Anda perlu mengisi metode ini untuk membaca isi bidang teks dan mengirimkan teks itu ke aktivitas lain.
Membangun Maksud
Intent adalah objek yang menyediakan waktu proses yang mengikat
komponen-komponen terpisah (misalnya dua aktivitas).
Intent menyatakan "maksud melakukan sesuatu" dari aplikasi.
Anda dapat menggunakan maksud untuk berbagai jenis tugas, tetapi dalam pelajaran ini, maksud Anda
memulai aktivitas lain.
Di MainActivity.java, tambahkan kode yang ditampilkan di bawah ini ke
sendMessage():
public class MainActivity extends AppCompatActivity {
public final static 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 clicks the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}
Android Studio akan menampilkan kesalahan Cannot resolve symbol karena kelas referensi kode ini tidak diimpor. Anda dapat memecahkan sebagian dengan fungsi "import class" Android Studio dengan menekan Alt + Enter (atau Option + Return di Mac). Impor Anda harus berakhir sebagai berikut:
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText;
Kesalahan tetap untuk DisplayMessageActivity, tetapi itu bukan masalah;
Anda akan memperbaikinya di bagian berikutnya.
Banyak hal yang terjadi di sendMessage(), jadi mari jelaskan
apa yang terjadi.
Konstruktor Intent membutuhkan dua parameter:
Contextsebagai parameter pertama (thisdigunakan karena kelasActivitymerupakan subkelas dariContext)ClassDari komponen aplikasi yang menjadi target sistem dalam mengirimkanIntent(dalam hal ini, aktivitas yang harus dimulai).Catatan: Referensi ke
DisplayMessageActivityakan menghasilkan kesalahan dalam Android Studio karena kelasnya belum ada. Untuk sementara abaikan kesalahan itu; Anda akan segera membuat kelasnya.
Metode putExtra()
menambahkan nilai EditText ke maksud. Intent
bisa membawa tipe data sebagai pasangan nilai-kunci bernama extras. Kunci Anda adalah
konstanta publik EXTRA_MESSAGE karena aktivitas
berikutnya menggunakan kunci untuk mengambil nilai teks. Cara terbaik
mendefinisikan kunci untuk tambahan maksud 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. Anda sekarang perlu membuat kelasnya.
Membuat Aktivitas Kedua
- Di jendela Project, klik kanan folder app dan pilih New > Activity > Empty Activity.
- Di jendela Configure Activity, ketik "DisplayMessageActivity" untuk Activity Name lalu klik Finish
Android Studio akan melakukan tiga hal secara otomatis:
- Membuat kelas
DisplayMessageActivity.javadengan implementasi metodeonCreate()yang diharuskan. - Membuat file layout sesuai
activity_display_message.xml - Menambahkan elemen
<activity>yang diperlukan diAndroidManifest.xml.
Jika Anda menjalankan aplikasi dan mengeklik tombol Send pada aktivitas pertama, aktivitas kedua dimulai tetapi aktivitas kosong. Ini karena aktivitas kedua menggunakan layout kosong default disediakan oleh template.
Menampilkan Pesan
Sekarang Anda akan memodifikasi aktivitas kedua untuk menampilkan pesan yang diteruskan oleh aktivitas pertama.
- Di
DisplayMessageActivity.java, tambahkan kode berikut ke metodeonCreate():@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message); layout.addView(textView); } - Tekan Alt + Enter (Option + Return di Mac) untuk mengimpor kelas yang tidak ada.
Impor Anda seharusnya menjadi sebagai berikut:
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.TextView;
Banyak hal terjadi di sini, jadi mari kita jelaskan:
- Pemanggilan
getIntent()menarik maksud yang memulai aktivitas. SetiapActivitydipanggil olehIntent, dengan cara apa pun pengguna masuk ke sana. PemanggilangetStringExtra()mengambil data dari aktivitas pertama. - Anda lewat program membuat
TextViewlalu menyetel ukuran dan pesannya. - Anda menambahkan
TextViewke layout yang diidentifikasi olehR.id.activity_display_message. Anda membentuk layoutViewGroupkarena itu superkelas semua layout dan mengandung metodeaddView().
Catatan: Layout XML yang dihasilkan oleh
versi Android Studio sebelumnya bisa jadi tidak menyertakan atribut android:id
. Pemanggilan findViewById() akan gagal jika layout
tidak memiliki atribut android:id. Jika demikian,
buka activity_display_message.xml dan tambahkan atribut
android:id="@+id/activity_display_message" ke elemen layout.
Anda sekarang bisa menjalankan aplikasi itu. Saat terbuka, ketik pesan di bidang teks, lalu klik Send. Aktivitas kedua menggantikan yang pertama di layar dan menampilkan pesan yang Anda ketik dalam aktivitas pertama.
Begitulah, Anda sudah membuat aplikasi Android pertama!
Untuk mengetahui selengkapnya, ikuti tautan di bawah untuk beralih ke kelas berikutnya.