Menghubungkan Antar Activity Menggunakan Intent

Suatu app Android bisa berisi lebih dari satu activity. Bila app kita memiliki lebih dari satu activity, kita seringkali perlu menavigasi untuk berpindah dari satu activity ke yang lainnya. Di Android kita bisa menavigasi antar activity dengan menggunakan 'Intent'. Cara terbaik untuk memahami konsep yang sangat penting ini meskipun agak abstrak adalah denga mencobanya dan melihat apa hasilnya. Berikut adalah latihan bagaimana membuat dua activity dan berpindah dari satu activity ke activity yang lain.

1. Kita buat project baru dan kita beri nama "UsingIntent".

2. Buat activity kedua dengan membuat class java baru dan kita beri nama "SecondActivity.java".

3. Kita modifikasi file "AndroidManifest.xml" dan tambahkan kode seperti berikut:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.usingintent">

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

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:label="Second Activity"
android:name=".SecondActivity" >
<intent-filter>
<action android:name="com.example.usingintent.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

</application>

</manifest>
4. Buat file layout untuk activity kedua dengan nama: "secondactivity.xml", dan tambahkan kode berikut:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/asecondactivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.usingintent.SecondActivity">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Ini adalah activity kedua" />
</LinearLayout>
5. Kita modifikasi dan tambahkan kode pada file "SecondActivity.java" seperti berikut:
package com.example.usingintent; 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class SecondActivity extends AppCompatActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);
}
}
6. Kita modifikasi file layout "activity_main.xml" seperti berikut:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.usingintent.MainActivity">

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tampilkan activity kedua"
android:onClick="onClick"/>
</LinearLayout>
7. Kita modifikasi file utama "MainActivity.java" seperti berikut:
package com.example.usingintent; 
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

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

public void onClick(View v) {
startActivity(new Intent("com.example.usingintent.SecondActivity"));
}
}
8. Jalankan di emulator Android Studio dan hasilnya seperti pada gambar berikut:
Berpindah dari satu activity ke yang lainnya menggunakan intent

Penjelasan

Seperti yang sudah kita pelajari, suatu activity terbuat dari komponen UI (misalnya, "activity_main.xml") dan suatu komponen class (misalnya "MainActivity.java"). Jadi, bila kita ingin menambahkan activity yang lain ke project kita, kita perlu membuat kedua komponen tersebut.

Di dalam file "AndroidManifest.xml", secara khusus kita harus tambahkan seperti berikut:
<activity
android:label="Second Activity"
android:name=".SecondActivity" >
<intent-filter>
<action android:name="com.example.usingintent.SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Dengan begitu kita sudah menambahkan suatu activity baru ke app. Harap diperhatikan hal-hal berikut:
  • Nama class dari activity baru yang ditambahkan adalah "SecondActivity".
  • Label untuk activity yang baru adalah "Second Activity".
  • Nama intent filter untuk activity baru adalah "com.example.usingintent.SecondActivity". Activity lain yang ingin memanggil activity ini akan memanggilnya melalui nama ini. Idealnya, kita seharusnya menggunakan nama domain perusahaan kita sebagai nama intent filter supaya mengurangi kemungkinan app lain memiliki nama intent filter yang sama.
  • Category pada intent filter adalah "android.intent.category.DEFAULT". Kita perlu menambahkan ini ke intent filter sehingga activity ini bisa dipanggil oleh activity lain dengan menggunakan method 'startActivity()'.
Bila tombol di-click, kita menggunakan method 'startActivity()' untuk menampilkan "SecondActivity" dengan membuat instans class 'Intent' dan kemudian melewatkan nama intent filter dari "SecondActivity" sebagai parameter (yaitu, "com.example.usingintent.SecondActivity"):
public void onClick(View v) {
startActivity(new Intent("com.example.usingintent.SecondActivity"));
}
Activity di Android bisa dipanggil oleh app apapun yang berjalan di perangkat. Contohnya, kita bisa membuat project Android baru dan kemudian menampilkan "SecondActivity" dengan menggunakan intent filter "com.example.usingintent.SecondActivity". Ini adalah konsep mendasar di Android yang memungkinkan app untuk memanggil app yang lain dengan mudah.


Bila activity yang ingin kita panggil ada dalam project yang sama, kita bisa menuliskan kode sebelumnya dengan cara berikut:
startActivity(new Intent(this, SecondActivity.class));
Tetapi, cara ini hanya bisa diterapkan apabila activity yang dipanggil tersebut ada dalam project yang sama dengan activity yang memanggilnya.

No comments: