1 . Pengenalan Intent di Android

Kita telah mempelajari tutorial sebelumnya bahwa Activity merepresentasi satu layar dengan user interface. contoh, Sebuah aplikasi email memiliki activity yang menunjukkan daftar email baru, dan activity lainya seperti menulis email dan membaca email. Kegunaan Intent disini adalah untuk berinteraksi antara kedua Activity. Intent juga dapat membawa data dari satu Activity ke Activity lainnya dan membawa kembali data ke activity satu setelah proses mengambilan data dari Activity kedua selesai.

Berikut gambaran hubungan antara Activity dan intent.  

pengenalan-intent-di-android.jpg (115 KB)

1. Jika salah satu email ditekan maka akan masuk ke dalam DetailEmailActivity. Berikut contoh kode bagaimana cara memanggil DetailEmailActivity melalui InboxActivitity.

Intent i = new Intent(InboxActivity.this, DetailEmailActivity.class);
startActivity(i);

2. Saat berada di DetailEmailActivity. Jika user menekan tombol back maka akan kembali pada InboxActivity. Bagaimana proses ini terjadi? Semua Activity di tampung ke dalam tumpukkan yaitu Back stack. Pertama user membuka aplikasi Email, maka InboxActivity menjadi posisi paling atas dalam backstack dan user dapat melihat tampilan dari InboxActivity.  Ketika User menekan salah satu daftar email, maka DetailEmailActivity dalam back stack menjadi posiss paling atas dan InboxActivity diberhentikan (onPause) dan menjadi diposisi dua dalam back stack. Ketika User menekan tombol back maka DetailEmailActivity dihancurkan (onDestroy) dan InboxActivity menjadi muncul kembali. Kita dapat simpulkan bahwa Activity yang masuk terakhir dalam back stack maka akan keluar lebih dulu. Berikut Gambaran proses di dalam back stack saat kita melakukan perpindahan Activity. Disini kotak hijau merepresentasikan sebuah back stack.

backstack-di-android.jpg (65 KB)

Demikian tutorial pengenalan Intent di android. Kita telah belajar tentang konsep intent dan mengetahui proses di belakangnya, ini sangat baik buat kamu untuk membuat aplikasi yang lebih baik kedepannya. Subtutorial selanjutnya, kita akan memulai mencoba membuat activity baru dan melakukan interaksi antara Activity. Terima kasih, terus mulai untuk belajar. :)


2 . Melakukan Interaksi Antara Activity dengan Intent

Pada tutorial Melakukan Interaksi Antara Activity dengan Intent, Kita akan belajar cara membuat activity baru dan melakukan perpindahan dari MainActivity ke Activity lain. Sekarang Kita membuat project baru seperti biasa, di jendela choose your project pilih Empty Activity dan selanjutnya di jendela Configure your project ikuti seperti berikut: 

  • Name: "BelajarIntent"
  • Package name: "com.teknorial.belajarintent"
  • Language: Java
  • Biarkan opsi lain sebagaimana adanya.

Setelah project berhasil dibuat, kita akan langsung membuat activity baru. Klik kanan pada direktori app di jendala project tool, pilih new->Activity->Empty Activity. Pada Jendela Configure Activity, masukan konfigurasi seperti berikut:

  • Activity Name : "DetailActivity"
  • Layout Name : "activity_detail"
  • Biarkan opsi lain sebagaimana adanya.

Kemudian Klik Finish.

membuat detail activity

DetailActivity dan activity_detail.xml sudah berhasil dibuat. Sekarang kita akan membuat sebuah Button yang digunakan untuk berpindah dari MainActivity ke DetailActivity. Buka activity_main.xml di direktori res/layout dan ubah seperti kode berikut.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_pindah"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="Pindah ke Detail Activity" />

</RelativeLayout>

Setelah berhasil button di tampilan , kita akan membuat event listener di button, kemudian saat button ditekan berpindah ke DetailActivity dengan Intent. Buka MainActivity dan modifikasi kode seperti di bawah ini.

package com.teknorial.belajarintent;

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

public class MainActivity extends AppCompatActivity {

    private Button mPindahBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPindahBtn = findViewById(R.id.btn_pindah);

        mPindahBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, DetailActivity.class);
                startActivity(i);
            }
        });
    }
}

Sekarang kita coba run aplikasi di Android Studio dan hasilnya seperti di gambar di bawah ini.

aplikasi belajar intent

Kita telah berhasil berpindah ke DetailActivity namun tidak ada tombol back tidak ada di action bar. Untuk menambahkan tombol back di Action Bar, kita perlu mendeklarasikan parent activity untuk DetailActivity di manifest (app/src/main/AndroidManifest.xml). 

android manifest detail activity

Buka AndroidManifest.xml, lihat di baris 11 terdapat tag Activity yang miliki attribut android:name=".DetailActivity". Tambahkan attribute di bawah ini kedalam tag Activity tersebut.

android:label="Detail Activity"
android:parentActivityName=".MainActivity

Attribute label digunakan untuk mengubah nama di Action Bar dan parentActivityName digunakan untuk mendeklarasikan parent dari sebuah Activity. Berikut kode keseluruhan dari AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.teknorial.belajarintent">

    <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">
        <activity
            android:name=".DetailActivity"
            android:label="Detail Activity"
            android:parentActivityName=".MainActivity"></activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

Sekarang kita coba Run kembali aplikasi di Android Studio. Jika tidak ada error, kita akan melihat aplikasi berjalan seperti gambar di bawah ini.

aplikasi-menggunakan-intent

Kita telah berhasil membuat aplikasi yang dapat berpindah antar Activity. Selanjutnya kita akan belajar bagaimana cara membawa mengirim data antar Activity. Demikian tutorial ini, jika kamu mengalami masalah dalam mengikuti tutorial, jangan ragu bertanya di kotak komentar. Terima Kasih :).


3 . Mengirim Data antar Activity dengan Intent

Pada tutorial Mengirim Data antar Activity dengan Intent. Kita akan belajar bagaimana cara mengirim data dari Activity ke Activity lainnya menggunakan Intent. Tetap menggunakan project di tutorial sebelumnya, kita akan menambah tiga widget baru yaitu dua EditText dan satu Button. Kita akan mengirimkan data dari kedua EditText ke DetailActivity. Pertama buka kembali activity_main.xml dan modifikasi kode berikut : 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_pindah"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="Pindah ke Detail Activity" />

    <EditText
        android:id="@+id/et_nama"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:hint="Masukan Nama"
        android:padding="10dp" />

    <EditText
        android:id="@+id/et_pesan"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/et_nama"
        android:layout_centerHorizontal="true"
        android:height="100dp"
        android:hint="Masukan Pesan"
        android:inputType="text|textMultiLine"
        android:padding="10dp"

        />

    <Button
        android:id="@+id/btn_kirim"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/et_pesan"
        android:layout_centerHorizontal="true"
        android:background="@color/colorAccent"
        android:paddingLeft="25dp"
        android:paddingRight="25dp"
        android:text="Kirim Data"
        android:textColor="@android:color/white"

        />


</RelativeLayout>

Setelah modifikasi seperti kode di atas maka preview dari activity_main.xml seperti gambar di bawah ini.

membuat form di android

Sekarang kita akan memodifikasi tampilan dari DetailActivity untuk menerima data yang akan dikirim dari MainActivity. Buka activity_detail.xml dan modifikasi kode seperti di bawah ini.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".DetailActivity">

    <TextView
        android:id="@+id/tv_nama"
        style="@style/TextAppearance.AppCompat.Body2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        tools:text="Nama" />

    <TextView
        android:id="@+id/tv_pesan"
        style="@style/TextAppearance.AppCompat.Body1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        tools:text="Pesan" />

</LinearLayout>

Setelah modifikasi seperti kode di atas maka preview dari activity_detail.xml seperti gambar di bawah ini.

detail activity android

Untuk mengirim data antar Acitivity dengan Intent, kita perlu menggunakan method putExtra(String Key, String Value) dan untuk menggambil data kita perlu menggunakan method getStringExtra(String Key). Buka kembali MainActivity, kita akan membuat event listener pada Widget Button yang memiliki id btn_kirim, kemudian mengambil data dari widget EditText dan mengirimnya ke DetailActivity. Modifikasi MainActivity seperti kode di bawah ini.

package com.teknorial.belajarintent;

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

public class MainActivity extends AppCompatActivity {

    private Button mPindahBtn;
    private Button mKirimBtn;
    private EditText mNamaEditText;
    private EditText mPesanEditText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mPindahBtn = findViewById(R.id.btn_pindah);
        mKirimBtn = findViewById(R.id.btn_kirim);
        mNamaEditText = findViewById(R.id.et_nama);
        mPesanEditText = findViewById(R.id.et_pesan);


        mPindahBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, DetailActivity.class);
                startActivity(i);
            }
        });

        mKirimBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, DetailActivity.class);
                /*
                * putExtra(String KEY, String value) ,  digunakan untuk mengirim data dengan intent.
                * .getText().toString(), digunakan untuk mengambil data dari widget EditText
                * */
                i.putExtra("EDITTEXT_NAMA", mNamaEditText.getText().toString());
                i.putExtra("EDITTEXT_PESAN",mPesanEditText.getText().toString());
                startActivity(i);
            }
        });


    }
}

Buka DetailActivity, kita akan mengambil data berdasarkan KEY yang kita kirim melalui intent, kemudian memasukannya ke dalam widget TextView. Buka DetailActivity dan modifikasi kode seperti di bawah ini.

package com.teknorial.belajarintent;

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

public class DetailActivity extends AppCompatActivity {


    private TextView mNamaTextView;
    private TextView mPesanTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        mNamaTextView = findViewById(R.id.tv_nama);
        mPesanTextView = findViewById(R.id.tv_pesan);

        //getIntent().getStringExtra(String KEY), digunakan mengambil data dari intent berdasarkan KEY. 
        String nama = getIntent().getStringExtra("EDITTEXT_NAMA");
        String pesan = getIntent().getStringExtra("EDITTEXT_PESAN");

        //.setText, digunakan untuk manampilkan data ke dalam TextView
        mNamaTextView.setText(nama);
        mPesanTextView.setText(pesan);

    }
}

Sekarang kita coba run aplikasi di Android Studio, jika tidak ada mengalami error, kita akan melihat aplikasi berjalan seperti di gambar di bawah ini. 

mengirim-data-antar-activity-dengan-intent.gif (373 KB)

Demikian tutorial Mengirim Data antar Activity dengan Intent. Kita telah berhasil membuat aplikasi yang dapat mengirimkan data antar Activity dan kita juga telah belajar bagaimana cara mengambil data inputan dari widget EditText, kemudian menampilkan data ke dalam widget TextView. Jika kamu mengalami kesulitan dalam mengikuti tutorial ini, jangan ragu untuk bertanya di kotak komentar. Terima kasih :)