[Pemrograman Android] Intent – Part 1

[Pemrograman Android] Intent – Part 1

Intent part 1

Halo sahabat ajar belajar kembali lagi bersama saya Mini Tutor Agung , di konten kali ini kita akan belajar tentang intent. Apa itu intent?

Intent adaalah mekanisme untuk melakukan sebuah action dan komunikasi antar komponen dari aplikasi, misalnya activity , service dan broadcast receiver. Secara umum sih ada tiga penggunaan intent dalam aplikasi android yaitu :

  1. Berpindah dari satu activity ke activity lain dengan atau tidak membawa data.
  2. Untuk menjalankan background service , misalnya untuk melakukan sinkronisasi ke server dan menjalankan proses yang berulang atau dikenal dengan istilah periodic / scheduler task). selebihnya bisa kalian lihat di sini https://developer.android.com/topic/performance/scheduling
  3. Mengirimkan objek broadcast ke aplikasi yang membutuhkan. Misal, ketika aplikasi membutuhkan sebuah background service setiap kali aplikasi selesai melakukan booting. Aplikasi harus bisa menerima obyek broadcast yang dikirimkan oleh sistem android utnuk event booting tersebut.

Selain itu intent sendiri juga punya dua bentuk yaitu Explicit dan Implicit intent.

Explicit intent adalah tipe intent yang digunakan untuk menjalankan komponen dari dalam sebuah aplikasi. Explicit intent bekerja dengan menggunakan nama kelas yang dituju misalnya dari kelas MainActivity ke ActivityWithData.

Implicit intent adalah tipe intent yang tidak memerlukan detail nama kelas yang ingin diaktifkan. Model ini memungkinkan komponen aplikasi lain bisa merespon request intent yang dijalankan. Contohnya pada aplikasi yang membutuhkan fitur foto , daripada kita membuat fungsi kamera sendiri lebih baik kita gunakan yang sudah ada pada aplikasi kamera bawaan yang telah terinstall atau dari aplikasi lain.

Supaya lebih paham mari kita praktekan cara membuat intent. Pertama kita buat project baru di android studio dengan kriteria sebagai berikut:

  • Nama project : intent
  • Terget dan Minimum sdk : Phone and Tablet , Api Level 15
  • Tipe Activity : Empty Activity
  • Activity Name : MainActivity

Lalu kemudian kita akan mendesain tampilan aplikasi kita seperti ini

Untuk membuat tampilan seperti ini pertama kita akan membuka file activity_main.xml di dalam folder res -> layout seperti di gambar ini

Lalu hapus kode program yang sudah ada dan ganti dengan yang ini :



<em><?</em><strong>xml version="1.0" encoding="utf-8"</strong><em>?>
</em> <<strong>LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
android:orientation="vertical"</strong>>

<<strong>EditText
android:id="@+id/text_intent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="input data"</strong>/>

<<strong>Button
android:id="@+id/move_activity_with_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="intent dengan data" </strong>/>

<<strong>Button
android:id="@+id/move_activity_without_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="intent tanpa data" </strong>/>

<<strong>Button
android:id="@+id/move_activity_with_object"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="inten dengan objek" </strong>/>

<<strong>Button
android:id="@+id/move_to_dial"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="intent dial number"</strong>/>

<<strong>Button
android:id="@+id/intent_activity_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="intent activity result"</strong>/>

<<strong>TextView
android:id="@+id/text_result_from-_activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:textSize="21sp"
android:text="resut from activity"</strong>/>
</<strong>LinearLayout</strong>>

Pada kode program diatas ini kita menggunakan LinearLayout sebagai parent layoutnya , untuk pembahasan layout lebih lengkap akan kita bahasa nanti diartikel lainnya. Pada desain layout diatas kita hanya menggunakan 3 widget yaitu EditText sebagai form input , Button sebagai tombol virtual di android dan TextView sebagai widget untuk menampilkan tulisan.

Supaya tiap – tiap widget memiliki keunikannnya sendiri maka kita harus memberi mereka id seperti ini android:id=”@+id/123″. tulisan 123 tersebut bisa kita ganti semau kita asal tidak menggunakan spasi sebagai pemisah katanya , namun sebaiknya gunakan nama yang sesuai dengan fungsi widget tersebut. Misal ada widget button yang digunakan untuk melakukan pencarian, maka sebaiknya kita beri nama id widget tersebut dengan nama “pencarian” atau “btn_cari” supaya kita lebih mudah mengenali widget tersebut beserta penggunaannya.

Kemudian ditiap widget harus menggunakan antribut android:layout_width=”match_parent” dan android:layout_height=”wrap_content” untuk mengatur besar widget yg kita inginkan. Ada tiga value yang bisa kita isi pada attribut tersebut yaitu “match_parent” , “wrap_content” dan kita bisa isi dengan angka misalnya 12 dengan satuan “dp” (density pixel) sehingga menjadi seperti ini “12dp”. di android studio kita juga bisa melihat hasil dengan menklik tab “Priview” disebelah kanan

Selanjutnya kita akan masuk pada kode program data dan menggunakan widget – widget tersebut untuk melakukan perintah. Pertama kita akan mulai dengan EditText sampai dengan button intent tanpa data pada part ini. Untuk mengedit kode program java nya kita bisa buka file MainActivity.java

Kemudian kita tambahkan beberapa baris seperti ini di dalam kelas MainActivity



<strong>public class </strong>MainActivity <strong>extends </strong>AppCompatActivity <strong>implements </strong>View.OnClickListener {
<strong>private </strong>Button <strong>intentWithData</strong>;
<strong>private </strong>Button <strong>intentWithNoData</strong>;
<strong>private </strong>EditText <strong>intentData</strong>;

@Override
<strong>protected void </strong>onCreate(Bundle savedInstanceState) {
<strong>super</strong>.onCreate(savedInstanceState);
setContentView(R.layout.<strong><em>activity_main</em></strong>);

<strong>intentWithData </strong>= (Button)findViewById(R.id.<strong><em>move_activity_with_data</em></strong>);
<strong>intentWithNoData </strong>= (Button)findViewById(R.id.<strong><em>move_activity_without_data</em></strong>);
<strong>intentData </strong>= (EditText)findViewById(R.id.<strong><em>text_intent</em></strong>);
}

@Override
<strong>public void </strong>onClick(View v) {
<strong>switch </strong>(v.getId()){
<strong>case </strong>R.id.<strong><em>move_activity_with_data</em></strong>:

<strong>break</strong>;
<strong>case </strong>R.id.<strong><em>move_activity_without_data</em></strong>:
<strong>break</strong>;
}
}
}

Button intentWithData dan intentWithNoData 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 ActivityWithData lalu ketik Finish

Kemudian buat lagi activity baru seperti proses diatas dengan nama ActivityWithNoData.

Setelah membuat activity baru sekarang kita tambahkan intent pada method onClick()



<strong>public class </strong>MainActivity <strong>extends </strong>AppCompatActivity <strong>implements </strong>View.OnClickListener {
<strong>private </strong>Button <strong>intentWithData</strong>;
<strong>private </strong>Button <strong>intentWithNoData</strong>;
<strong>private </strong>EditText <strong>intentData</strong>;

@Override
<strong>protected void </strong>onCreate(Bundle savedInstanceState) {
<strong>super</strong>.onCreate(savedInstanceState);
setContentView(R.layout.<strong><em>activity_main</em></strong>);

<strong>intentWithData </strong>= (Button)findViewById(R.id.<strong><em>move_activity_with_data</em></strong>);
<strong>intentWithNoData </strong>= (Button)findViewById(R.id.<strong><em>move_activity_without_data</em></strong>);
<strong>intentData </strong>= (EditText)findViewById(R.id.<strong><em>text_intent</em></strong>);

<strong>intentWithData</strong>.setOnClickListener(<strong>this</strong>);
<strong>intentWithNoData</strong>.setOnClickListener(<strong>this</strong>);
}

@Override
<strong>public void </strong>onClick(View v) {
<strong>switch </strong>(v.getId()){
<strong>case </strong>R.id.<strong><em>move_activity_with_data</em></strong>:
<em>//simpan data pada editext ke dalam variable string
</em>String data = <strong>intentData</strong>.getText().toString().trim();
<em>/*

Kita membuat suatu obyek Intent dengan memberikan
kelas Activity asal (MainActivity.this) dan kelas Activity tujuan (ActivityWithData.class)
pada konstruktor kelas Intent.

*/
</em>Intent intent1 = <strong>new </strong>Intent(MainActivity.<strong>this</strong>, ActivityWithData.<strong>class</strong>);
<em>//gunakan method putExtra untuk membawa data dari MainActivity ke ActivityWithData dengan kata kunci "move_data"
//kata kunci "move_data" ini akan kita gunakan pada kelas ActivityWithData untuk menampilkan data yang dibawa
</em>intent1.putExtra(<strong>"move_data"</strong>, data);
<em>//lakukan proses intent
</em>startActivity(intent1);

<strong>break</strong>;
<strong>case </strong>R.id.<strong><em>move_activity_without_data</em></strong>:
<em>/*
Kita membuat suatu obyek Intent dengan memberikan
kelas Activity asal (MainActivity.this) dan kelas Activity tujuan (ActivityWithNoData.class)
pada konstruktor kelas Intent.
*/
</em>Intent intent2 = <strong>new </strong>Intent(MainActivity.<strong>this</strong>, ActivityWithNoData.<strong>class</strong>);
<em>//lakukan proses intent
</em>startActivity(intent2);
<strong>break</strong>;
}
}
}

Setelah itu untuk memberi tanda bahwa kita sudah berpindah halaman, maka kita harus membuat textview pada dua activity ini

Tambahkan kode program ini pada activity_with_no_data



<em><?</em><strong>xml version="1.0" encoding="utf-8"</strong><em>?>
</em> <<strong>RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"</strong>>

<<strong>TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:text="Ini Acitivty tanpa Data"</strong>/>

</<strong>RelativeLayout</strong>>

Kemudian pada activity_with_data kita tambahkan kode program ini

<em><?</em><strong>xml version="1.0" encoding="utf-8"</strong><em>?>
</em> <<strong>RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"</strong>>

<<strong>TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:text="Ini Acitivty dengan Data"</strong>/>

<<strong>TextView
android:id="@+id/data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:layout_below="@+id/title"
android:text="Ini Datanya"</strong>/>

</<strong>RelativeLayout</strong>>

Kemudian kita buka ActivityWithData.java lalu kita tambahkan kode program berikut untuk menampilkan data yang dibawa dari MainActivity



<strong>public class </strong>ActivityWithData <strong>extends </strong>AppCompatActivity {
<strong>private </strong>TextView <strong>showDataFromMainActivity</strong>;

@Override
<strong>protected void </strong>onCreate(Bundle savedInstanceState) {
<strong>super</strong>.onCreate(savedInstanceState);
setContentView(R.layout.<strong><em>activity_with_data</em></strong>);

<strong>showDataFromMainActivity </strong>= (TextView)findViewById(R.id.<strong><em>data</em></strong>);
<em>//tampilkan data dari MainActivity
</em><strong>showDataFromMainActivity</strong>.setText(getIntent().getStringExtra(<strong>"move_data"</strong>));
}
}

Oke , sekarang kita coba run aplikasi kita dengan emulator atau dengan device kita.

Lalu kita isikan form input data pada aplikasi kita kemudian klik button Intent Dengan Data dan coba juga klik button Intent Tanpa Data.

Sebelum kita tutup artikel ini supaya lebih paham kita akan coba bedah kode yang sudah ditulis ini. Di materi sebelumnya kita pernah belajar membuat activity, tapi tahukah kalian syarat suatu activity haruslah terdaftar pada berkas <strong>AndroidManifest.xml </strong>. Karena menggunakan Android Studio, proses pendaftaran tersebut dilakukan secara otomatis. Android manifest bisa kita lihat pada folder Manifest

<img class="wp-image-1519 aligncenter" src="http://ajarbelajar.com/wp-content/uploads/2018/09/word-image-19.png" />


<em><?</em><strong>xml version="1.0" encoding="utf-8"</strong><em>?>
</em> <<strong>manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="grup.developer.agung.intent"</strong>>

<<strong>application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"</strong>>
<<strong>activity android:name=".MainActivity"</strong>>
<<strong>intent-filter</strong>>
<<strong>action android:name="android.intent.action.MAIN" </strong>/>

<<strong>category android:name="android.intent.category.LAUNCHER" </strong>/>
</<strong>intent-filter</strong>>
</<strong>activity</strong>>
<<strong>activity android:name=".ActivityWithData" </strong>/>
<<strong>activity android:name=".ActivityWithNoData"</strong>></<strong>activity</strong>>
</<strong>application</strong>>

</<strong>manifest</strong>>

karena ActivityWithData dan ActivityWithNoData sudah terdaftar di AndroidManifest.xml maka kita bisa berpindah dari MainActivity ke activity tersebut.

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”.

Kemudian coba kita lihat kode program ini



<<strong>intent-filter</strong>>
<<strong>action android:name="android.intent.action.MAIN" </strong>/>

<<strong>category android:name="android.intent.category.LAUNCHER" </strong>/>
</<strong>intent-filter</strong>>

Kode program ini digunakan untuk menentukan bagaimana suatu activity dijalankan oleh Android Runtime (ART) atau Dalvik Virtual Machine (DVM).

Lalu baris dibawah ini bermakna bahwa MainActivity memiliki intent action utama dari keseluruhan activity yang ada di suatu Aplikasi.



<<strong>action android:name="android.intent.action.MAIN" </strong>/>

Kemudian Kode dibawah ini menandakan bahwa MainActivity akan dikategorikan sebagai activity launcher. Activity tersebut akan diluncurkan pertama kali ketika pengguna menekan ikon aplikasi pada peranti Android.



<<strong>category android:name="android.intent.category.LAUNCHER" </strong>/>

Gimana nih seru kan belajar android , di konten ini kita sudah belajar tentang intent dengan data dan tanpa data, untuk penjelasan kode program yang ada java class nya sudah saya berikan comment di atas baris code programnya ya jadi tidak perlu lagi di jelaskan disini . selanjutnya kita akan melengkapi materi intent kita di intent part ke dua dengan desain dan kode program yang sama seperti disini , see you …

 

ID Konten : KT053

Feedback Konstruktif
*
*
*
*
*
*
*

Leave a Reply