Belajar Menggunakan Intent, Sebuah Jembatan Interaksi Antar Komponen

Apriliany Halimatus Sa'diyyah 4 Agustus 2017

Belajar Menggunakan Intent, Sebuah Jembatan Interaksi Antar Komponen

Intent adalah sebuah kelas dalam programming Android yang berfungsi untuk perpindahan halaman.

Intent juga merupakan suatu objek yang terdapat dalam suatu activity dimana objek tersebut dapat komunikasi dengan activity yang lain, baik activity pada fungsi internal android misal seperti memanggil activity dalam satu package atau beda package yang masih berada dalam satu project.

Intent merupakan objek tipe android.content.Intent. Melalui metode startActivity() yang digunakan untuk memulai sebuah activity lain.

Intent dibagi menjadi 2, yaitu :

  1. Explicit Intent berfungsi untuk mengaktifkan komponen-komponen dalam satu aplikasi yang sama. Misalnya seperti : Berpindah Activity.
  2. Implicit Intent berfungsi untuk memanggil fungsi activity yang sudah ada di fungsi internal android seperti Dial Number, Open Browser dan lainnya.

Tutorial kali ini, saya akan mempraktekan implementasi dari Intent menggunakan Android Studio.

Langkah - langkah

  • Explicit dan Implicit Intent

Pertama-tama, buatlah dua buah activity pada Android Studio Anda. Lalu tambahkan baris program pada :

activity_main.xml

Berikut baris program pada activity_main.xm :

<?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="com.example.acer.myapplication.PageOne">

    <Button
        android:id="@+id/explicitintent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Klik disini untuk Explicit Intent"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="150dp"/>
				
    <Button
        android:id="@+id/implicitintent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Klik disini untuk Implicit Intent"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="200dp"/>

</RelativeLayout>

activity_page_two.xml

Berikut baris program pada activity_page_two.xml :

<?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="com.example.acer.myapplication.PageTwo">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ini adalah halaman kedua"
        android:textSize="30dp"
        android:layout_marginTop="150dp"
        android:layout_alignParentStart="true"
        android:layout_marginStart="30dp" />

</RelativeLayout>

PageOne.java

Berikut baris program untuk PageOne.java :


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

public class PageOne extends AppCompatActivity implements View.OnClickListener {
    Button explicitintent;
    Button implicitintent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        explicitintent = (Button)findViewById(R.id.explicitintent);
        explicitintent.setOnClickListener(this);
        implicitintent = (Button)findViewById(R.id.implicitintent);
        implicitintent.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.explicitintent:
                Intent explicit = new Intent(PageOne.this, PageTwo.class);
                startActivity(explicit);
                break;
            case R.id.implicitintent:
               Intent implicit = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.codepolitan.com"));
                startActivity(implicit);
                break;
            default:
                break;
        }
    }
}
  • Intent dengan Extra

Intent dengan extra atau putExtra() adalah sebuah metode dari Intent yang digunakan untuk mengirimkan data ke activity yang dituju. Data yang akan dikirim pun tipenya dapat 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 dapat dipassing antar Activity melalui metode ini.

MainActivity.java

Berikut baris program untuk MainActivity.java :

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

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText name = (EditText) findViewById(R.id.edit_textdata);
        Button button = (Button) findViewById(R.id.button_submitintent);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this,Main2Activity.class);
                i.putExtra("name", name.getText().toString());
                startActivity(i);
            }
        });
    }
}

Main2Activity.java

Berikut baris program untuk Main2Activity.java :

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

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        TextView t = (TextView) findViewById(R.id.text_viewdata);
        Bundle bundle=getIntent().getExtras();
        String s=bundle.getString("name");
        t.setText(s);

    }
}

activity_main.xml

Berikut baris program 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:layout_marginTop="20dp"
        android:id="@+id/edit_textdata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Data"/>
				
    <Button
        android:id="@+id/button_submitintent"
        android:text="Intent with extra"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    
</LinearLayout>

activity_main2.xml

Berikut baris program pada activity_main2.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/text_viewdata"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Data"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

Hasil Output

Explicit Intent

explixit

Hasil Output

Implicit Intent

Image

Hasil Output

Intent dengan Extra

Image

Referensi http://www.vogella.com/tutorials/AndroidIntent/article.html