A. Tujuan
Agar mahasiswa dapat memahami konsep Activity dan Intent dalam android.
B. Bahan
1. Software Android Studio
2. Koneksi Internet
3. Smartphone
C. Teori
Activity dan Intent
Komponen utama yang penting dan sangat vital pada android adalah
penggunaan Activity dan Intent. Dua komponen itu adalah element basic yang
ada di aplikasi Android.
Activity diibaratkan sebagai satu buah halaman/screen. Aplikasi Android bisa
mempunyai lebih dari satu Activity untuk menampilkan berbagai macam
screens/halaman. Contohnya satu Activity untuk menampilkan
halaman Settings, Activity lainnya untuk menampilkan halaman About, lainnya
menampilkan Main Menu dan seterusnya.
Intent adalah object yang digunakan mengirim pesan antar komponen di
Android.. Dengan bantuan intent, komponen bisa meminta fungsional dari
komponen lain. Intent juga membantu mengkomunikasikan bagian dari sebuah
aplikasi; perpindahan dari satu layar (aktifitas) ke layar lain.
Semua komponen (aplikasi dan layar) dari perangkat Android itu terisolasi satu
sama lain. Satu-satunya cara mereka bisa berkomunikasi adalah dengan
menggunakan intent.
Jenis Intent
Android mendukung dua jenis intent: eksplisit dan implisit. Ketika aplikasi
menentukan komponen target dalam sebuah intent, itu adalah intent eksplisit.
Saat aplikasi tidak menentukan target komponen, itu adalah intent implisit.
Contoh Intent Eksplisit
Intent numbersIntent =
new Intent(MainActivity.this,NumbersActivity.class);
startActivity(numbersIntent);
Di sini, NumbersActivity adalah target komponen dari MainActivity. Ini
artinya NumbersActivity adalah komponen yang akan dipanggil oleh Android.
Contoh Intent Implisit
<activity android:name=".BrowserActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"/>
</intent-filter>
</activity>
D. Praktikum
Contoh01
Langkah I : Membuat Activity
Bukalah Android Studio dengan project baru menggunakan template Empty
Activity, maka dihasilkan file activity_main.xml di folder res/layout yang
berpasangan dengan file MainActivity.java di folder java/domainproject.
Selanjutnya buatlah activity baru menggunakan template Empty Activity dan
beri nama SubActivity, maka dihasilkan file activity_sub.xml di folder
res/layout yang berpasangan dengan file SubActivity.java di folder
java/domainproject.
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="Halaman Utama"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:text="Button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</android.support.constraint.ConstraintLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="Sub Halaman"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
}
}
<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=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</manifest>
Catatan :
Activity yang pertama kali dijalankan diberi tag
<action android:name="android.intent.action.MAIN" />
Seperti :
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Contoh 2
Pada bagian ini, dibuat sebuah aplikasi kecil untuk mencoba kedua jenis intent.
Aplikasi tersebut akan memiliki form untuk mengisi nama pertama dan nama
terakhir. Saat tombol Submit diklik, kedua nilai akan diteruskan ke aktifitas
lain. Akan ada juga tombol untuk memanggil browser
<EditText
android:id="@+id/first_name_text"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:padding="8dp"
app:layout_constraintTop_toBottomOf="@+id/first_name_view"
tools:layout_editor_absoluteX="0dp" />
<TextView
android:id="@+id/last_name_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Enter last name"
app:layout_constraintTop_toBottomOf="@+id/first_name_text"
tools:layout_editor_absoluteX="0dp" />
<EditText
android:id="@+id/last_name_text"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:padding="8dp"
app:layout_constraintTop_toBottomOf="@+id/last_name_view"
tools:layout_editor_absoluteX="0dp" />
<Button
android:id="@+id/submit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Submit"
app:layout_constraintTop_toBottomOf="@+id/last_name_text"
tools:layout_editor_absoluteX="0dp" />
<Button
android:id="@+id/browser_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="open_browser"
app:layout_constraintTop_toBottomOf="@+id/submit_button"
tools:layout_editor_absoluteX="0dp" />
</android.support.constraint.ConstraintLayout>
<TextView
android:id="@+id/show_first_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Last Name:"/>
<TextView
android:id="@+id/show_last_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ------------------ kode tambahan : mulai -------------------
submitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText firstName = (EditText) findViewById(R.id.first_name_text);
EditText lastName = (EditText) findViewById(R.id.last_name_text);
browserButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.unair.ac.id"));
startActivity(intent);
}
});
Penjelasan :
Untuk tombol Submit, diatur sebuah OnClickListener untuk menjalankan
sebuah aksi saat tombol diklik. Saat klik terjadi, diambil nama pertama dan
terakhir dari view, dan mengirimkannya ke aktifitas berikutnya: ShowActivity.
Target komponen disebut secara eksplisit dalam intent.
Untuk tombol browser, OnClickListener akan membuat sebuah intent baru
untuk memanggil aplikasi apapun yang cocok dengan filter:
sebuah ACTION_VIEW yang bisa menangani sebuah URL web (membuka
sebuah browser web). Jika terdapat lebih dari satu browser terinstall di
smartphone, maka akan diminta untuk memilih salah satu untuk menjalankan
aksi membuka website. Ini adalah contoh intent implisit.
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
showFirstName.setText(inputFirstName);
showLastName.setText(inputLastName);
Penjelasan :
Pada aktifitas ini, dimulai dengan mengambil string dari MainActivity. Bisa
didapat referensi ke intent yang memanggil aktifitas ini dengan fungsi
getIntent(). Lalu bisa diakses string yang dilempar menggunakan
getExtras().getString(). Akhirnya, setelah mendapat instance TextView dari
layout, menampilkan nilai yang didapat.
E. Tugas
F. Pustaka
https://developer.android.com/guide/topics/ui/layout/