Cara Mengirim Data Antar Activity Menggunakan Intent dan Bundle


Assalamualaikum Warahmatullahi Wabarakatuh.

Sebelumnya kita sudah mempelajari Cara Berpindah Activiy Menggunakan Intent, pada tutorial berikut ini kita akan belajar, selain berpindah dari satu activity ke activiy lainnya, kita juga dapat mengirim/passing data atau nilai pada activity yang dituju, data tersebut bisa berupa String, int, float, double, byte, char, dsb. Tidak semua tipe data support untuk dipassing, ada beberapa data yang tidak bisa dipassing menggunakan Intent atau Bundle seperti data yang berukuran besar, yaitu gambar (image bitmap) atau file, tidak bisa dipassing antar Activity.


Ada 2 cara untuk mengirimkan data/nilai antar activity didalam aplikasi Android, yaitu dengan menggunakan Intent dan Bunde, keduanya mempunyai fungsi yang sama, yaitu untuk passing data, tetapi dengan menggunakan Bundle, akan terlihat lebih rapi, karena dikemas terlebuh dahulu didalam bundle sebelum dikirimkan.

Materi Lainnya Yang Harus Kalian Pelajari Sebelumnya:

Cara Mengirim Data Antar Activity Menggunakan Intent dan Bundle

Disini kita akan menggunakan 2 buah Activiy, acivity pertama yaitu MainActivity, yang digunakan untuk mengambil data yang diinput oleh user, dan yang kedua yaitu activity yang digunakan untuk menerima data yang dikirimkan.

Pada activity yang pertama, buka activity_main.xml, disini kita akan menggunakan 1 buah TextView dan 2 Buah Button, TextView untuk mendapatkan input dan Button untuk mengirimkan Input. Button pertama untuk mengirim input dengan Intent dan yang kedua dengan Bundle.
<?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:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:background="#FFF5F5F5"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="android.cianjur.developer.net.basicandroid.MainActivity">

    <EditText
        android:id="@+id/input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/masukan_data"
        android:inputType="textPersonName" />

    <Button
        android:id="@+id/send_by_intent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Kirim (Intent)" />

    <Button
        android:id="@+id/send_by_bundle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Kirim (Bundle)" />

</LinearLayout>
Kalian bisa mendrag/dropnya seperti berikut ini:


Selanjutnya kita masukan source code pada MainActivity.java tersebut.
package android.cianjur.developer.net.basicandroid;

/*
 Dibuat Oleh WILDAN M ATHOILLAH
 */

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.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private TextView DataInput;
    private Button SendIntent, SendBundle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DataInput = findViewById(R.id.input);
        SendIntent = findViewById(R.id.send_by_intent);
        SendIntent.setOnClickListener(this);
        SendBundle = findViewById(R.id.send_by_bundle);
        SendBundle.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.send_by_intent:
                //Mengirim/Passing Data Menggunakan Intent
                Intent sendData1 = new Intent(MainActivity.this, SecondActivity.class);
                sendData1.putExtra("DataSaya", DataInput.getText());
                startActivity(sendData1);
                break;

            case R.id.send_by_bundle:
                //Mengirim/Passing Data Menggunakan Bundle dan Intent
                Bundle setData = new Bundle();
                Intent sendData2 = new Intent(MainActivity.this, SecondActivity.class);
                setData.putString("DataSaya", DataInput.getText().toString());
                sendData2.putExtras(setData);
                startActivity(sendData2);
                break;
        }
    }
}
Penjelasan:

Pada source code tersebut, pada Intent, kita menggunakan fungsi putExtra dengan parameter Key dan Value. Key digunakan untuk menandai data mana yang akan diambil dan Value adalah data yang akan dikirim.

Yang kedua yaitu dengan menggunakan Bundle, kita dapat menyimpan data pada Bundle dengan menggunakan fungsi putString, lalu setelah itu kita panggil bunde tersebut pada Intent, menggunakan fungsi putExtras.

Selanjutnya kalian buka activity yang kedua, Data yang dikirim tadi akan ditampilkan disini, dengan menggunakan TextView.
<?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:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="#FFF5F5F5"
    android:gravity="center"
    android:orientation="vertical"
    tools:context="android.cianjur.developer.net.basicandroid.SecondActivity">

    <TextView
        android:id="@+id/getData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Data Yang Dierima:"
        android:textSize="15sp"
        android:textStyle="bold" />
    
</LinearLayout>
Berikutnya kita masukan source code untuk Activity tersebut, coba kalian perhatikan baik-baik.
package android.cianjur.developer.net.basicandroid;

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

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        TextView GetNilai = findViewById(R.id.getData);

        //Mengecek Apakah Menggunakan Bundle atau Tidak
        if(getIntent().getExtras() != null){
            //Statement Disini Akan Berjalan Jika Menggunakan Bundle
            Bundle bundle = getIntent().getExtras();
            GetNilai.setText("Data Yang Dierima: "+bundle.getString("DataSaya"));
        }else {
            //Statement Berikut ini Akan Dijalankan Jika Tidak Menggunakan Bundle
            GetNilai.setText("Data Yang Dierima: "+getIntent().getStringExtra("DataSaya"));
        }
    }
}
Demo:




Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.