Belajar Passing Data Antar Activity Menggunakan Intent dan Bundle di Android

Halo semuanya, melanjutkan series saya tentang Belajar Membuat Aplikasi Android di Android Studio untuk Pemula, setelah sebelumnya saya membahas tentang berpindah dari satu activity ke activity lain menggunakan Intent, kali ini kita akan melanjutkan dengan konsep yang sama hanya ditambah dengan ada data yang ingin dikirim dari Activity 1 ke Activity 2. Nah bagaimana caranya mengirim data dari Activity 1 ke Activity 2 di Android? Kita akan bahas di bawah ini :

Mengirim data dari satu Activity ke Activity lain di Android

Di Android, passing data antar Activity ada dua cara, yaitu menggunakan Intent, dan menggunakan Bundle. Data yang akan dikirim pun tipenya bisa bermacam-macam, bisa berbentuk String, angka (integer, float, double), ArrayList, boolean, array, character, dan sebagainya. Namun tidak semua tipe data support untuk dikirim antar Activity, tipe data yang berukuran besar seperti gambar (image bitmap) atau file, tidak bisa dipassing antar Activity melalui metode ini.

Oke langsung saja, sebelum memulai tutorial ini sebelumnya ada beberapa tutorial yang harus kalian baca.

Pre-requisites :

Jika kalian sudah membuat project Android baru di Android Studio, maka langsung saja kita ke langkah selanjutnya.

Mengirim Data Antar Activity menggunakan Bundle di Android

Pertama-tama kita akan belajar mengirim data antar Activity menggunakan Bundle. Kodenya sebagai berikut :

                Bundle bundle = new Bundle();
                bundle.putString("data1", "somestring data");
                bundle.putString("data2", "somestring data 2");
                Intent intent = new Intent(TWOHActivityConcept3.this, TWOHActivityConcept4.class);
                intent.putExtras(bundle);
                startActivity(intent);

Bisa dilihat pada kode di atas, basically Bundle itu berperan sebagai sebuah bungkusan, yang berisi data kita di dalamnya. Kita memasukkan data yang ingin kita kirim ke dalam sebuah Bundle, dan disertai key untuk menandai data yang mana pada saat pengambilan data. Kemudian baru setelah itu kita kirimkan Bundle tersebut ke Activity lain menggunakan Intent.

Keuntungan mengirim data lewat Bundle adalah, data lebih rapi dan terstruktur karena sebelumnya dikemas di dalam Bundle terlebih dahulu, sebelum dikirim.

Mengirim Data Antar Activity lewat Intent di Android

Cara kedua adalah mengirimkannya langsung menggunakan Intent. Pada cara kedua ini data tersebut tidak dibungkus di dalam Bundle terlebih dahulu, melainkan langsung diikutsertakan di Intent dalam bentuk extra.

Konsepnya sama, kita memasukkan data langsung ke dalam Intent dalam bentuk key value pair.

                Intent intent = new Intent(TWOHActivityConcept3.this, TWOHActivityConcept4.class);
                intent.putExtra("data1", "somestring data");
                intent.putExtra("data2", "somestring data 2");
                startActivity(intent);

Contoh Penerapan

Di tutorial ini, nanti kita akan membuat aplikasi Android dengan dua Activity. Activity pertama akan mempunyai EditText dimana kita bisa menginputkan data String di dalamnya. Kemudian apabila kita klik tombol Submit, maka akan terbuka Activity kedua dan akan menampilkan data String yang kita inputkan di Activity pertama.

Kita akan buat dua buah layout XML, activity_main.xml dan activity_second.xml.

Isikan kode berikut pada activity_main.xml :

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ini halaman utama Activity 1"
        android:textAppearance="?android:attr/textAppearanceLarge" />

        <EditText
            android:id="@+id/et_data1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Data 1" />

        <EditText
            android:id="@+id/et_data2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Data 2" />

    <Button
        android:id="@+id/bt_submit"
        android:text="Submit Data using Bundle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/bt_submitintent"
        android:text="Submit Data using Intent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

 

Kemudian pada activity_second.xml

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ini halaman kedua Activity 2"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:layout_margin="15dp"
        android:id="@+id/tv_data1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Data 1"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:layout_margin="15dp"
        android:id="@+id/tv_data2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Data 2"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

Pada file java nya, MainActivity berperan sebagai Activity pertama. Buka MainActivity.java, dan isikan kode berikut :

package id.web.twoh.twoh_android_layoutbasic;

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

/**
 * Created by Hafizh Herdi on 1/19/2017.
 */

public class MainActivity extends AppCompatActivity {

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

        final EditText etData1 = (EditText) findViewById(R.id.et_data1);
        final EditText etData2 = (EditText) findViewById(R.id.et_data2);
        Button btSubmit = (Button) findViewById(R.id.bt_submit);
        Button btSubmitIntent = (Button) findViewById(R.id.bt_submitintent);

        btSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                /**
                 * Passing data menggunakan Bundle
                 */

                Bundle bundle = new Bundle();
                bundle.putString("data1", etData1.getText().toString());
                bundle.putString("data2", etData2.getText().toString());
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });

        btSubmitIntent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                /**
                 * Passing data via Intent
                 */

                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra("data1", etData1.getText().toString());
                intent.putExtra("data2", etData2.getText().toString());
                startActivity(intent);
            }
        });
    }
}

Kemudian pada ActivitySecond.java, isikan kode berikut.

package id.web.twoh.twoh_android_layoutbasic;

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

/**
 * Created by Hafizh Herdi on 1/20/2017.
 */

public class ActivitySecond extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        TextView tvData1 = (TextView) findViewById(R.id.tv_data1);
        TextView tvData2 = (TextView) findViewById(R.id.tv_data2);

        /**
         * Kita cek apakah ada Bundle atau tidak
         */
        if(getIntent().getExtras()!=null){
            /**
             * Jika Bundle ada, ambil data dari Bundle
             */
            Bundle bundle = getIntent().getExtras();
            tvData1.setText(bundle.getString("data1"));
            tvData2.setText(bundle.getString("data2"));
        }else{
            /**
             * Apabila Bundle tidak ada, ambil dari Intent
             */
            tvData1.setText(getIntent().getStringExtra("data1"));
            tvData2.setText(getIntent().getStringExtra("data2"));
        }
    }
}

Pada ActivitySecond inilah, terdapat fungsi untuk mengambil data dari Bundle, dan dari Intent extras menggunakan key yang sudah kita define sebelumnya. Contohnya bisa langsung dilihat pada kode di atas.

Demo

Jika sudah, bisa langsung kita demokan aplikasinya.

Tutorial passing data antar activity

Tutorial passing data antar activity

Oke, bisa dilihat pada gambar di atas. Sebelah kiri adalah tempat dimana kita menginputkan data berupa string, dan ketika tombol Submit ditekan, maka akan berpindah ke Activity 2, dan menampilkan data sama persis seperti data yang kita kirim. 🙂

That’s all ! Semoga membantu. 🙂 Jangan lupa untuk clone project nya sebagai Android Studio module di GitHub saya, dengan terlebih dahulu follow dan star project tersebut. Silahkan bertanya di bagian komentar jika ada yang kurang jelas. 😀





Download aplikasi kami di Google Play Store


2 Comments

  1. dochisad August 8, 2017

Leave a Reply