Pertemuan 5
KOMPONEN ANDROID INTENT
Tentang Intent
Intent adalah mekanisme untuk melakukan sebuah action dan komunikasi antar komponen aplikasi misal activity, services, dan broadcast receiver. Ada tiga penggunaan umum intent dalam aplikasiAndroid yaitu:
• Memindahkan satu activity ke activity lain dengan atau tidak membawa data.
• Menjalankan background service, misalnya melakukan sinkronisasi ke server dan menjalankan proses berulang (periodic/scheduler task).
• Mengirimkan obyek broadcast ke aplikasi yang membutuhkan. Misal, ketika aplikasi membutuhkan proses menjalankan sebuah background service setiap kali aplikasi selesai melakukan booting. Aplikasi harus bisa menerima obyek broadcastyang dikirimkan oleh sistemAndroid untuk event booting tersebut.
Intent memiliki dua bentuk yaitu:
1. Explicit Intent
Adalah tipe Intent yang digunakan untuk menjalankan komponen dari dalam sebuah aplikasi. Explicit intent bekerja dengan menggunakan nama kelas yang dituju misal : ac.id.nusamandiri.activity.DetailActivity. Umumnya intent ini digunakan untuk mengaktifkan komponen pada satu aplikasi.
2. Implicit Intent.
Adalah tipe intent yang tidak memerlukan detail nama kelas yang ingin diaktifkan. Model ini memungkinkan komponen dari aplikasi lain bisa merespon request intent yang dijalankan. Penggunaan tipe intent ini umumnya diperuntukan untuk menjalankan fitur/fungsi dari komponen aplikasi lain. Contohnya ketika kita membutuhkan fitur untuk mengambil foto. Daripada membuat sendiri fungsi kamera, lebih baik kita menyerahkan proses tersebut pada aplikasi kamera bawaan dari peranti atau aplikasi kamera lain yang telah terinstal sebelumnya di peranti. Hal yang sama misalnya ketika kita membutuhkan fungsi berbagi konten. Kita bisa memanfaatkan intent untuk menampilkan aplikasi mana saja yang bisa menangani fitur tersebut. Implementasi implicit intent ini akan sangat memudahkan bagi pengembang agar tetap fokus pada proses bisnis inti dari aplikasi yang dikembangkan.
Latihan Intent
Latihan ini menitik beratkan pada implementasi intent untuk melakukan perpindahan dari activity ke activity lain, dengan atau tidak membawa data. Beberapa bagian dari latihan ini akan menjawab beberapa pertanyaan umum dalam pengembangan aplikasiAndroid sebagai berikut:
• Bagaimana berpindah dari satu activity ke activity lain?
• Bagaimana berpindah dari satu activity ke activity lain dengan membawa data?
o Single value dari suatu variabel.
o Obyek model Plain Old Java Object (POJO).
• Menjalankan komponen di aplikasi lain untuk keperluan membuka browser atau melakukan pemanggilan melalui aplikasi telepon bawaan?
• Mengirimkan hasil nilai balik melalui Intent
Logika Dasar
Berpindah dari satu Activity ke Activity lain dengan membawa data. Activity asal akan mengirimkan data melalui Intent danActivity tujuan akan menerima data yang dikirimkan.
1. Buat Project baru diAndroid Studio dengan kriteria sebagai berikut:
o Nama Project : AppBelajarIntent
o Target & Minimum Target SDK: Phone and Tablet, Api level 15
o Tipe Activity : Empty Activity
o Activity Name : MainActivity
2. Buatkan tampilan antarmuka seperti dibawah
3. Kita akan memiliki 5 tombol dengan fungsi yang berbeda-beda dan 1 buah TextView untuk menampilkan data yang berasal dari intent. Baik, kita akan mulai selangkah demi selangkah dimulai dari tombol yang paling atas. Kondisikan activity_main.xml menjadi seperti ini:
Jangan lupa untuk menambahkan file dimens.xml secara manual di dalam res → values. Dan isikan file dimens.xml seperti berikut
4. Juga jangan lupa atur colors.xml didalam res → values. dan isikan sebagai berikut:
5. Lalu untuk MainActivity.java tambahkan beberapa baris seperti ini.
0. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
1. private Button btnMoveActivity;
2. @Override
3. protected void onCreate(Bundle savedInstanceState) {
4. super.onCreate(savedInstanceState);
5. setContentView(R.layout.activity_main);
6.
7. btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
8. btnMoveActivity.setOnClickListener(this);
9. }
10. @Override
11. public void onClick(View v) {
12. switch (v.getId()){
13. case R.id.btn_move_activity:
14. break;
15. }
16. }
17. }
6. Button btnMoveActivity akan memiliki fungsi untuk berpindah activity ke activity lain. Sekarang kita buat Activity baru dengan cara sebagai berikut: Klik kanan di package utama aplikasi package name → New → Activity → Empty Activity. Lalu isikan MoveActivity pada dialog. Ketika sudah klik Finish.
7. Untuk menandakan bahwa perpindahan activity berhasil, silakan tambahkan satu TextView dan kondisikan activity_move.xml menjadi seperti berikut.
0.//<?xml version="1.0" encoding="utf-8"?>
1.//<RelativeLayout //xmlns:android="http://schemas.android.com/apk/res/android"
2.//xmlns:tools="http://schemas.android.com/tools"
3.//android:layout_width="match_parent"
4.//android:layout_height="match_parent"
5.//android:paddingBottom="@dimen/activity_vertical_margin"
6.//android:paddingLeft="@dimen/activity_horizontal_margin"
7.//android:paddingRight="@dimen/activity_horizontal_margin"
8.//android:paddingTop="@dimen/activity_vertical_margin"
9.//tools:context="id.ac.nusamandiri.belajarintentapp.MoveActivity">
10.//
11.//android:layout_width="match_parent"
12.//android:layout_height="wrap_content"
13.//android:text="Ini Adalah MoveActivity"/>
14.//</RelativeLayout>
8. Setelah activity tujuan sudah berhasil diciptakan, sekarang saatnya menambahkan suatu intent pada method onClick() di MainActivity.java menjadi sebagai berikut.
0. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
1. private Button btnMoveActivity;
2. @Override
3. protected void onCreate(Bundle savedInstanceState) {
4. super.onCreate(savedInstanceState);
5. setContentView(R.layout.activity_main);
6. btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
7. btnMoveActivity.setOnClickListener(this);
8. }
9. @Override
10. public void onClick(View v) {
11. switch (v.getId()){
12. case R.id.btn_move_activity:
13. Intent moveIntent = new Intent(MainActivity.this, MoveActivity.class);
14. startActivity(moveIntent);
15. break;
16. }
17. }
18. }
Selesai! Langkah pertama untuk memindahkan satu activity ke activity lain sudah selesai, sekarang silakan jalankan aplikasi Anda dengan mengklik tombol pada menu bar. Seharusnya sekarang anda sudah bisa memindahkan activity dengan mengklik tombol ‘Berpindah Activity’. Hasil:
klik back maka akan kembali ke menu utama
Bedah Kode
Kita telah belajar bagaimana membuat suatu activity baru. Di materi sebelumnya, syarat suatu activity haruslah terdaftar pada berkas AndroidManifest.xml. Karena menggunakan Android Studio, proses pendaftaran tersebut dilakukan secara otomatis. untuk mengecek silahkan klik app ➝ manifests ➝ AndroidManifest.xml
Perhatikan bahwa MoveActivity sudah teregistrasi di AndroidManifest.xml dan sekarang sudah aman jika kita melakukan perpindahan activity dari MainActivity ke MoveActivity. Umumnya, jika kita lupa meregistrasikan Activity baru ke dalam berkas AndroidManifest.xml akan terjadi error seperti ini "android.content.ActivityNotFoundException:Unable to find explicit activity class". Berikutnya, apakah Anda memahami maksud dari baris ini?
1. <intent-filter>
2. <action android:name="android.intent.action.MAIN" />
3. <category android:name="android.intent.category.LAUNCHER" />
4. </intent-filter>
Intent-filter merupakan mekanisme untuk menentukan bagaimana suatu activity dijalankan oleh Android Runtime (ART) atau Dalvik Virtual Machine (DVM).
.1. <action android:name="android.intent.action.MAIN" />
Baris di atas bermakna bahwa MainActivity memiliki intent action utama dari keseluruhan activity yang ada di suatu Aplikasi.
1. <category android:name="android.intent.category.LAUNCHER" />
Kode di atas menandakan bahwa MainActivity akan dikategorikan sebagai activity launcher. Activity tersebut akan diluncurkan pertama kali ketika pengguna menekan ikon aplikasi pada peranti Android.
Selanjutnya
1. Intent moveIntent = new Intent(MainActivity.this, MoveActivity.class);
Kita membuat suatu obyek Intent dengan cara seperti di atas dengan memberikan kelas Activity asal (MainActivity.this) dan kelas Activity tujuan (MoveActivity.class) pada konstruktor kelas Intent.
Selanjutnya kita akan membuat sebuah intent yang didalamnya akan membawa data ke activity tujuan. Anda Siap?
1. Buka activity_main.xml, kemudian tambahkan satu tombol lagi dibawah tombol sebelumnya, ketikkan script di bawah ke activity_main.xml
<Button
android:id="@+id/btn_move_activity_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="BERPINDAH ACTIVITY DENGAN DATA"
android:layout_marginBottom="@dimen/activity_vertical_margin"/>
2. Setelah selesai dengan penambahan pada berkas activity_main.xml, maka lanjutkan dengan menambahkan beberapa baris berikut di MainActivity.java
1. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
2. private Button btnMoveActivity;
3. private Button btnMoveWithDataActivity;
4. @Override
5. protected void onCreate(Bundle savedInstanceState) {
6. super.onCreate(savedInstanceState);
7. setContentView(R.layout.activity_main);
8. btnMoveActivity = (Button)findViewById(R.id.btn_move_activity); 9. btnMoveActivity.setOnClickListener(this);
10. btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_activity_data);
11. btnMoveWithDataActivity.setOnClickListener(this);
12. }
13. @Override
14. public void onClick(View v) {
15. switch (v.getId()){
16. case R.id.btn_move_activity:
17. Intent moveIntent = new Intent(MainActivity.this, MoveActivity.class);
18. startActivity(moveIntent);
19. break;
20. case R.id.btn_move_activity_data:
21. break;
22. }
23. }
24. }
3. Selanjutnya, buat Activity baru lagi seperti cara sebelumnya dan beri nama MoveWithDataActivity. Lalu, pada layout activity_move_with_data.xml kita tambahkan sebuah TextView ber-ID untuk menampilkan data yang dikirimkan dari Activity asal.
1. <?xml version="1.0" encoding="utf-8"?>
2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. xmlns:tools="http://schemas.android.com/tools"
4. android:layout_width="match_parent"
5. android:layout_height="match_parent"
6. android:paddingBottom="@dimen/activity_vertical_margin"
7. android:paddingLeft="@dimen/activity_horizontal_margin"
8. android:paddingRight="@dimen/activity_horizontal_margin"
9. android:paddingTop="@dimen/activity_vertical_margin"
10. tools:context="id.ac.nusamandiri.associate.belajarintentapp.MoveWithData Activity">
11. <TextView
12. android:id="@+id/tv_data_received"
13. android:layout_width="match_parent"
14. android:layout_height="wrap_content"
15. android:text="Data Received"/>
16. </RelativeLayout>
4. Selanjutnya pada MoveWithDataActivity.java kita kondisikan menjadi seperti berikut:
1. public class MoveWithDataActivity extends AppCompatActivity {
2. public static String EXTRA_AGE = "extra_age";
3. public static String EXTRA_NAME = "extra_name";
4. private TextView tvDataReceived;
5. @Override
6. protected void onCreate(Bundle savedInstanceState) {
7. super.onCreate(savedInstanceState);
8. setContentView(R.layout.activity_move_with_data);
9. tvDataReceived = (TextView)findViewById(R.id.tv_data_received);
10. String name = getIntent().getStringExtra(EXTRA_NAME);
11. int age = getIntent().getIntExtra(EXTRA_AGE, 0);
12. String text = "Name : "+name+", Your Age : "+age;
13. tvDataReceived.setText(text);
14. }
15. }
5. Dan sekarang saatnya kita menambahkan obyek Intent pada MainActivity.java menjadi seperti berikut :
1. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
2. private Button btnMoveActivity;
3. private Button btnMoveWithDataActivity;
4. @Override
5. protected void onCreate(Bundle savedInstanceState) {
6. super.onCreate(savedInstanceState);
7. setContentView(R.layout.activity_main);
8. btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
9. btnMoveActivity.setOnClickListener(this);
10. btnMoveWithDataActivity=(Button)findViewById(R.id.btn_move_activity_d ata);
11. btnMoveWithDataActivity.setOnClickListener(this);
12. }
13. @Override
14. public void onClick(View v) {
15. switch (v.getId()){
16. case R.id.btn_move_activity:
17. Intent moveIntent = new Intent(MainActivity.this, MoveActivity.class);
18. startActivity(moveIntent);
19. break;
20. case R.id.btn_move_activity_data:
21. Intent moveWithDataIntent = new Intent(MainActivity.this, MoveWithDataActivity.class);
22. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAM E, "Muhammad Luthfi");
23. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE, 23);
24. startActivity(moveWithDataIntent);
25. break;
26. }
27. }
28. }
6. Silakan jalankan aplikasi Anda, kemudian coba klik pada tombol ‘Pindah Activity dengan Data’. Seharusnya Anda sudah bisa memindahkan satu activity ke activity lain dengan membawa data.
hasil setelah mengklik tombol Berpindah Activity Dengan Data
Membawa data dengan Plain Old Java Object (POJO)
POJO adalah sebuah kelas Java biasa yang tidak bergantung dengan kelas lain. Umumnya kelas POJO ini disebut sebagai kelas Java yang memiliki properti/variabel dan metode setter-getter
Kegunaan:
POJO akan membantu kita saat aplikasi semakin kompleks. Contohnya POJO bisa kita gunakan untuk melakukan koneksi ke server untuk requestAPI atau akses ke database lokal dengan SQLite.
Selain POJO, Android juga memiliki obyek parcelable POJO. Obyek ini akan lebih memudahkan kita untuk melakukan pengiriman data dari satu activity ke activity lainnya.
1. public class MyBean {
2.
3. private String someProperty;
4.
5. public String getSomeProperty() {
6. return someProperty;
7. }
8.
9. public void setSomeProperty(String someProperty) {
10. this.someProperty = someProperty;
11. }
12. }
contoh get setter
1. Sebelum membuat obyek parcelable, kita buat kelas Java POJO terlebih dahulu. Caranya, klik kanan pada package utama proyek → New → Java Class
2. Pada dialog, isikan nama kelas dengan ‘Person’. Lalu klik OK.
3. Setelah selesai terbentuk kelas Person, kondisikan kelas tersebut menjadi seperti ini.
1. public class Person {
2. private String name;
3. private int age;
4. private String email;
5. private String city;
6. public String getName() {
7. return name;
8. }
9. public void setName(String name) {
10. this.name = name;
11. }
12. public int getAge() {
13. return age;
14. }
15. public void setAge(int age) {
16. this.age = age;
17. }
18. public String getEmail() {
19. return email;
20. }
21. public void setEmail(String email) {
22. this.email = email;
23. }
24. public String getCity() {
25. return city;
26. }
27. public void setCity(String city) {
28. this.city = city;
29. }
30. }
Anda tidak perlu menulis satu per satu metode setter-getter nya, di Android Studio tersedia fasilitas generator untuk hal tersebut. Caranya, setelah Anda menentukan variabel apa saja yang akan digunakan lakukan, lakukan beberapa langkah sebagai berikut :
- Klik kanan pada workspace, pilih Generate.
- Pilih Getter and Setter.
- Pilih semua variabel dengan cara Ctrl+A pada windows dan Command+A pada mac. Bila sudah, maka klik OK. Secara otomatis metode setter dan getter masing-masing variabel akan dibuatkan.
Selanjutnya kita akan menambahkan plugin Android Parcelable Generator pada Android Studio. Plugin ini berguna untuk mengubah kelas POJO menjadi obyek Parcelable. Langkahlangkahnya sebagai berikut :
1. Buka settings dengan cara File → Settings pada Windows dan Android Studio → Preferences pada Mac.
2. Pilih menu Plugin. Dan inputkan "Android Parcelable" pada search box kemudian tekan Enter.
3. Klik browse, dengan ini kita memerintahkan Android Studio untuk melakukan pencarian plugin di server. Setelah ketemu Android Parcelable code generator, klik Install.
4. Biarkan Android Studio melakukan proses instalasi plugin. Bila sukses, maka Anda akan diminta untuk melakukan restartAndroid Studio yang sedang berjalan.
Klik Restart → Klik OK dan jika ada pilihan untuk restart Android Studio maka pilih restart. Biarkan Android Studio untuk restart agar plugin-nya dapat kita gunakan setelahnya. Catatan : Jika dialog search tidak berhasil mencari plugin, kosongkan kata pencarian dan masukkan kembali kata pencarian "Android Parcelable". Ini bisa terjadi karena ada error di dalam dialog Plugins.
5. Selanjutnya, setelah plugin Parcelable generator terinstal saatnya kita implementasikan pada kelas Person. Dengan cara : Klik kanan pada workspace (pastikan anda berada pada tab kelas Person) pilih menu Generate.
6. Pilih Parcelable.
7. Pada dialog box yang tampil, pilih semua variable yang ada lalu klik OK. Sekarang Anda bisa menemukan beragam metode parcelable untuk kelas Person. Sekarang kelas Person sudah sah menjadi kelas parcelable dan dapat dikirimkan ke activity lain melalui intent.
8. Sekarang waktunya kita implementasikan pada intent. Namun sebelumnya tambahkan satu tombol lagi pada activity_main.xml sebagai berikut:
1. <Button
2. android:id="@+id/btn_move_activity_object"
3. android:layout_width="match_parent"
4. android:layout_height="wrap_content"
5. android:text="Pindah Activity dengan Object"
6. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
9. Setelah selesai dengan layout xml, sekarang kita tambahkan (pada bagian yang ditebalkan) juga di kelas MainActivity.javasehingga menjadi sebagai berikut :
1. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
2. private Button btnMoveActivity;
3. private Button btnMoveWithDataActivity;
4. private Button btnMoveWithObject;
5. @Override
6. protected void onCreate(Bundle savedInstanceState) {
7. super.onCreate(savedInstanceState);
8. setContentView(R.layout.activity_main);
9. btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
10. btnMoveActivity.setOnClickListener(this);
11. btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_activity_data);
12. btnMoveWithDataActivity.setOnClickListener(this);
13.
14. btnMoveWithObject = (Button)findViewById(R.id.btn_move_activity_object);
15. btnMoveWithObject.setOnClickListener(this);
16. }
17. @Override
18. public void onClick(View v) {
19. switch (v.getId()){
20. case R.id.btn_move_activity:
21. Intent moveIntent = new Intent(MainActivity.this, MoveActivity.class);
22. startActivity(moveIntent);
23. break;
24. case R.id.btn_move_activity_data:
25. Intent moveWithDataIntent = new Intent(MainActivity.this, MoveWithDataActivity.class);
26. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAM E, "Esron RIkardo Nainggolan ");
27. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE, 5);
28. startActivity(moveWithDataIntent);
29. break;
30.
31. case R.id.btn_move_activity_object:
32.
33. break;
34. }
35. }
36. }
10. Buat Activity baru dengan nama MoveWithObjectActivity lalu pada activity_move_with_object.xml tambahkan satu buah TextView untuk menampilkan data yang dikirimkan.
1. <?xml version="1.0" encoding="utf-8"?>
2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. xmlns:tools="http://schemas.android.com/tools"
4. android:layout_width="match_parent"
5. android:layout_height="match_parent"
6. android:paddingBottom="@dimen/activity_vertical_margin"
7. android:paddingLeft="@dimen/activity_horizontal_margin"
8. android:paddingRight="@dimen/activity_horizontal_margin"
9. android:paddingTop="@dimen/activity_vertical_margin"
10. tools:context="id.ac.nusamandiri.belajarintentapp.MoveWithObjectActivity ">
11. <TextView
12. android:id="@+id/tv_object_received"
13. android:layout_width="match_parent"
14. android:layout_height="wrap_content"
15. android:text="Object Received"/>
16. </RelativeLayout>
11. Sekarang, pada MoveWithObjectActivity.java tambahkan kodenya sehingga menjadi sebagai berikut:
1. public class MoveWithObjectActivity extends AppCompatActivity {
2. public static String EXTRA_PERSON = "extra_person";
3. private TextView tvObject;
4. @Override
5. protected void onCreate(Bundle savedInstanceState) {
6. super.onCreate(savedInstanceState);
7. setContentView(R.layout.activity_move_with_object);
8. tvObject = (TextView)findViewById(R.id.tv_object_received);
9. Person mPerson = getIntent().getParcelableExtra(EXTRA_PERSON);
10. String text = "Name : "+mPerson.getName()+", Email : "+mPerson.getEmail()+", Age : "+mPerson.getAge()
11. + ", Location : "+mPerson.getCity();
12. tvObject.setText(text);
13. }
14. }
12. Setelah kita membuat activity tujuan dengan sempurna, sekarang kita hanya butuh menambahkan beberapa baris pada bagian switch… case pada MainActivity.javasebagai berikut:
1. Person mPerson = new Person();
2. mPerson.setName("Muhammad Luthfi");
3. mPerson.setAge(23);
4. mPerson.setEmail(" muhammad.luthfi9@gmail.com");
5. mPerson.setCity("JAKARTA");
6. Intent moveWithObjectIntent = new Intent(MainActivity.this, MoveWithObjectActivity.class);
7. moveWithObjectIntent.putExtra(MoveWithObjectActivity.EXTRA_PERSON, mPerson);
8. startActivity(moveWithObjectIntent);
Setelah semua komponen selesai dibuat, saatnya menjalankan kembali aplikasinya. Cobalah menakan tombol 'Pindah Activity dengan Object'. Sekarang Anda sudah berhasil memindahkan satu obyek secara utuh, Selamat!
Intent Dengan Tipe Implicit
Anda sudah belajar bagaimana menggunakan intent dengan tipe eksplisit. Sekarang saatnya Anda melanjutkan ke intent dengan tipe implicit.
1. Buka kembali activity_main.xml tambahkan satu tombol lagi sebagai berikut :
1. <Button
2. android:id="@+id/btn_dial_number"
3. android:layout_width="match_parent"
4. android:layout_height="wrap_content"
5. android:text="Dial a Number"
6. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
2. Sekarang, buka kembali MainActivity.java dan lanjutkan dengan melakukan casting tombol Dial Number, set listener dan menambahkan action ketika tombol diklik.
8. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
9. private Button btnMoveActivity;
10. private Button btnMoveWithDataActivity;
11. private Button btnMoveWithObject;
12. private Button btnDialPhone;
13. @Override
14. protected void onCreate(Bundle savedInstanceState) {
15. super.onCreate(savedInstanceState);
16. setContentView(R.layout.activity_main);
17. btnMoveActivity = (Button)findViewById(R.id.btn_move_activity);
18. btnMoveActivity.setOnClickListener(this);
19. btnMoveWithDataActivity = (Button)findViewById(R.id.btn_move_activity_data);
20. btnMoveWithDataActivity.setOnClickListener(this);
21. btnMoveWithObject = (Button)findViewById(R.id.btn_move_activity_object);
22. btnMoveWithObject.setOnClickListener(this);
23. btnDialPhone = (Button)findViewById(R.id.btn_dial_number);
24. btnDialPhone.setOnClickListener(this);
25. }
26. @Override
27. public void onClick(View v) {
28. switch (v.getId()){
29. case R.id.btn_move_activity:
30. Intent moveIntent = new Intent(MainActivity.this, MoveActivity.class);
31. startActivity(moveIntent);
32. break;
33. case R.id.btn_move_activity_data:
34. Intent moveWithDataIntent = new Intent(MainActivity.this, MoveWithDataActivity.class);
35. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_NAME, "Muhammad Luthfi ");
36. moveWithDataIntent.putExtra(MoveWithDataActivity.EXTRA_AGE, 23);
37. startActivity(moveWithDataIntent);
38. break;
39. case R.id.btn_move_activity_object:
40. Person mPerson = new Person();
41. mPerson.setName("Muhammad Luthfi");
42. mPerson.setAge(23);
43. mPerson.setEmail(" Muhammad.luthfi9@gmail.com");
44. mPerson.setCity("JAKARTA");
45. Intent moveWithObjectIntent = new Intent(MainActivity.this, MoveWithObjectActivity.class);
46. moveWithObjectIntent.putExtra(MoveWithObjectActivity.EXTRA_PERSON, mPerson);
47. startActivity(moveWithObjectIntent);
48. break;
49. case R.id.btn_dial_number:
50. String phoneNumber = "085319094079";
51. Intent dialPhoneIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+phoneNumber));
52. startActivity(dialPhoneIntent);
53. break;
54. }
55. } }
Setelah selesai, silakan jalankan lagi aplikasi.dan aplikasi yang digunakan bisa men-dial sebuah nomor telepon melalui aplikasi bawaan dari peranti yang dibuat.
Selanjutnya, kita akan membuat sebuah Intent yang didalamnya akan membawa data dengan ResultActivity.
Pada modul ini, kita akan membedah hubungan activity dan intent dalam menerima nilai balik. Kadang kala, ketika kita menjalankan sebuah activity dari activity lain, kita mengharapkan ada nilai hasil balik dari activity yang dijalankan ketika ia ditutup.
Contohnya kita memiliki activity A yang menjalankan activity B untuk melakukan sebuah proses. Lalu nilai hasil dari proses tersebut dikirimkan kembali ke activity A sebelum activity B ditutup dengan pemanggilan metode finish(). Itulah yang dinamakan sebuah activity menerima nilai hasil balik dari activity yang dia jalankan. Untuk memperjelas, ayo kita lanjutkan lagi proses ngodingnya.
1. Sekarang untuk menerapkan konsep diatas, buat sebuah activity baru dengan nama MoveForResultActivity. Setelah itu, pada activity_result.xml silakan kondisikan layout kita dengan 1 buah TextView, 1 buah Radio Group, 3 buah Radio Button dan 2 buah Button sebagai berikut :
2. Setelah selesai, lanjutkan ke berkas MoveForResultActivity.java dengan menuliskan kode sebagai berikut :
3. Pada activity_main.xml tambahkan lagi satu Button dan satu TextView yang akan kita gunakan untuk menjalankan MoveForResultActivity sebagai berikut:
1. <Button
2. android:id="@+id/btn_move_for_result"
3. android:layout_width="match_parent"
4. android:layout_height="wrap_content"
5. android:text="Pindah Activity untuk Result"
6. android:layout_marginBottom="@dimen/activity_vertical_margin"/>
7. <TextView
8. android:id="@+id/tv_result"
9. android:layout_width="match_parent"
10. android:layout_height="wrap_content"
11. android:textSize="24sp"
12. android:gravity="center"
13. android:text="Hasil"/>
4. Setelah selesai, kita lanjut garap berkas MainActivity.java. Buka berkasnya dan sesuaikan kodenya sebagai berikut.
5. Setelah selesai, pastikan tidak ada bagian kode yang tertinggal. Jalankan kembali aplikasinya, dan coba Anda pilih tombol ‘Pindah Activity untuk Result’. Pilih angka yang Anda suka dan lihat hasilnya. Di MainActivity.java sudah ada angka yang tadi Anda pilih di obyek textiew tvResult.
Sekian percobaan pembuatan aplikasi yang saya buat pada pertemuan 5 semoga bermanfaat 😇🙏