Anda di halaman 1dari 69

Fudamental Android

dengan Kotlin (Part 1)


Sunaryo Winardi, S.Kom., M.TI.

PRODI. TEKNIK INFORMATIKA (S-1)


Elearning
http://www.mikroskil.ac.id/elearning
Key :

Perhatikan Kontrak Kuliah, bahwa Kuliah ini 80% adalah kelas


Online.
Forum Kelas online akan dibalas pada jam mata kuliah berlangsung,
Untuk menyatakan anda telah hadir dalam kelas online, anda wajib
memposting minimal 3, atau telah mendapatkan point 5, dan telah
mengikuti KUIS dan mengikuti semua peraturan yang ada di
elearning (seperti mengunduh berkas, membuat laporan, dan
mengirimkan APK tugas)
Apa yang Anda Pelajari di Fudamental
Android dengan Kotlin (Part 1)
• You will learn to:
• Membentuk Aktifitas
• Membentuk Intent
Fudamental Android
• Komponen dasar Android terdiri atas :
1. Activity
2. Intent
3. Fragment
4. Threads
5. Service
6. Receiver

Keenam komponen dasar ini perlu anda kuasai untuk


dapat membangun sebuah aplikasi Android.
Activity
• Komponen ini merupakan komponen utama yang paling penting
karena akan langsung berinterkasi dengan pengguna aplikasi.
• Activitiy biasanya akan berisi antarmuka, Contohnya?
• Antarmuka dari Activity akan disusun menggunakan sebuah file
xml
• Umumnya sebuah aplikasi terdari atas beberapa Activity yang
memiliki Siklus hidupnya sendiri masing-masing dari onCreate
hingga onDestroy
• Aplikasi yang memiliki lebih dari 1 Activity, harus diatur melalui
file pengaturan AndroidManifest.xml
• Read more :
https://developer.android.com/guide/components/activities/intr
o-activities
Activity
Activity
• Activity Lifecycle
• Anda telah mempelajari Activity Lifecycle pada
Semester sebelumnya.
• Kenapa ini Penting untuk anda Ingat?
Activity

Klik

Klik
Activity
• Last In, First Out (LIFO)
• Ingat, proses aktifitas android yang sedang tidak
bekerja, akan ditumpuk kedalam tumpukan,
sehingga aktifitas terakhir yang masuk, aktifitas
tersebut yang pertama akan dikeluarkan.
Activity
• Saving Activity State
• Aktivitas yang berada dalam state onPause, maka objek didalam
Aktivitas akan selalu tersimpan di dalam memory, sehingga
kondisinya akan tetap sama seperti kondisi sebelumnya.
• Akan tetapi, ketika terdapat kondisi Sistem Android memerlukan
memori, Objek dari Aktifitas akan dihancurkan, sehingga
lifecycle akan aktifitas akan dimulai kembali dari onCreate.
• Hal ini juga berlaku ketika anda mengubah orientasi dari layar
anda (portraint atau landscape) atau perubahan bahasa,
dikarenakan sistem harus menghancurkan aktifitas lama dan
membentuk aktifitas baru untuk menyesuaikan diri dengan
kondisi pengaturan baru sistem.
Activity
• Oleh karena itu, sebelum aktifitas dihancurkan, pastikan
anda selalu menyimpan perubahan yang terjadi
menggunakan metode onSaveInstanceState()
• onSaveInstanceState() dapat menyimpan informasi
dengan cara penyimpanana data menggunakan Bundle,
yang dapat menyimpan data yang tidak telalu besar
ukurannya
• Bagaimana jika datanya terlalu besar?
onSaveInstanceState
Buat Projek baru dengan Langkah-langkah:
1. Mulai Android Studio dan buat proyek Android Studio
baru. Beri nama projek “MyStatus”
2. Jangan lupa untuk mencentang “Include Kotlin
support”
3. Pilih SDK Minimum yang Anda gunakan di proyek
sebelumnya.
4. Pilih Empty Activity untuk template proyek. Klik
Next.
5. Terima nama aktivitas default (MainActivity). Pastikan
kotak Generate Layout file dicentang. Klik Finish.
onSaveInstanceState
Buat tampilan XML berikut pada activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
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=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/Status"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_margin="10dp"
android:background="#aaa"
android:text="Status"/>
<TextView
android:id="@+id/textCount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Update Status"
android:layout_margin="5dp"/>
<EditText
android:id="@+id/newStatus"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_margin="10dp"
android:gravity="top"
/>
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Update"
android:layout_margin="5dp"
android:layout_gravity="right"/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
onSaveInstanceState
Pada MainActivity.kt, ketikan baris koding ini:
class MainActivity : AppCompatActivity() {
val MAX_LEN = 160
fun EditText.limitLength(maxLength: Int) {
filters = arrayOf(InputFilter.LengthFilter(maxLength))
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
newStatus.limitLength(MAX_LEN)
submit.setOnClickListener {
Status.text = newStatus.text
newStatus.text=null

}
newStatus.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable) {}
override fun beforeTextChanged(s: CharSequence, start: Int,
count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence, start: Int,
before: Int, count: Int) {
textCount.text = "Update Status :
${newStatus.length()} / ${MAX_LEN}"
}
})
}

}
onSaveInstanceState
• Pada koding ini, status yang telah diperbaharui, akan
tetap hilang pada saat pengguna mengubah orientasi
dari aplikasi
• Oleh karena itu, tambahkan koding berikut pada
MainActivity.kt
//tambahkan dibawah import
const private val EXTRA_STATUS= "STATUS_STATE“
//tambahkan didalam class MainActivity
override fun onSaveInstanceState(outState: Bundle?) {
if(outState!=null) {
outState.putString(EXTRA_STATUS, Status.text.toString())
}
super.onSaveInstanceState(outState)
}
onSaveInstanceState
• Pada akhir dari metode onCreate, tambahkan Koding
berikut

if(savedInstanceState!=null){
Status.text=savedInstanceState.getString(EXTRA_STATUS)
}

• Jika koding yang anda buat telah benar, maka ketika


anda mengganti oreintasi dari aplikasi anda, status anda
tidak akan hilang/berubah, melainkan akan tetap seperti
status terakhir yang telah anda tambahkan
Pembahasan Program
• Perhatikan baris berikut

fun EditText.limitLength(maxLength: Int) {


filters = arrayOf(InputFilter.LengthFilter(maxLength))
}

• Apa fungsi dari baris program ini?


Pembahasan Program
• Perhatikan baris berikut
newStatus.addTextChangedListener(object : TextWatcher {

override fun afterTextChanged(s: Editable) {}

override fun beforeTextChanged(s: CharSequence, start: Int,


count: Int, after: Int) {
}

override fun onTextChanged(s: CharSequence, start: Int,


before: Int, count: Int) {
textCount.text = "Update Status : ${newStatus.length()} / ${MAX_LEN}"
}
})

• Apa fungsi dari baris program ini?


Pembahasan Program
• Perhatikan baris berikut

override fun onSaveInstanceState(outState: Bundle?) {


if(outState!=null) {
outState.putString(EXTRA_STATUS, Status.text.toString())
}
super.onSaveInstanceState(outState)
}

• Apa fungsi dari baris program ini?


Pembahasan Program
• Perhatikan baris berikut

if(savedInstanceState!=null){
Status.text=savedInstanceState.getString(EXTRA_STATUS)
}

• Apa fungsi dari baris program ini?


Latihan 1:
Dengan cara yang sama, simpan
data tanggal dan jam yang
dimasukkan oleh pengguna
menggunakan Bundle pada
onSaveInstanceState
Intent
• Komponen ini berperan sebagai media komunikasi
antara setiap komponen dalam android.
• Ada 3 penggunaan Umum Intent:
1. Memulai Aktifitas dengan atau tanpa membawa data
menggunakan StartActivity atau
StartActifityForResult
2. Menjalankan background Service dengan
startService atau bindService
3. Memberikan broadcast dengan sendBroadcast atau
sendOrderedBroadcast
Intent
• Intent sendiri mempunyai 2 bentuk :
1. Intent Explisit
2. Intent Implisit

• Apakah anda masih ingat apa perbedaannya?

• Read more :
• https://developer.android.com/guide/components/intents-filters
Intent
• Pada contoh ini, anda akan mempelajari cara
1. Berpindah Aktifitas
2. Berpindah Aktifitas dengan membawa data
3. Berpindah Aktifitas dengan membawa objek
4. Menjalankan Intent Implicit
5. Mengembalikan nilai meggunakan fungsi finish
Intent
1. Berpindah Aktifitas
• Kondisikan
main_activity.xml
sebagai berikut
Intent
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/startActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Start Activity"/>
<TextView
android:id="@+id/textResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/startActivity"
android:layout_centerInParent="true"
android:layout_margin="10dp"
android:textSize="20dp"
android:text="Hasil"/>
</RelativeLayout>
Intent
1. Berpindah Aktifitas
• Buat Empty Activity
baru dan beri nama
Kondisikan
SecondActivity
• Kondisikan
activity_second.xml
sebagai berikut
Intent
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/label1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Second Activity"
android:textSize="30dp"
android:layout_margin="20dp"/>
</RelativeLayout>
Intent
• Pada onCreate, tambahkan metode berikut:

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

startActivity.setOnClickListener { openMyActivity() }
}

private fun openMyActivity() {


var intent = Intent(this,SecondActivity::class.java)
startActivity(intent)
}
Intent
• Pembahasan Koding
• Untuk memulai aktivitas baru menggunakan Kotlin,
anda dapat menggunakan Objek Intent yang
berisikan parameter kelas saat pemanggil intent
dan nama kelas yang akan digunakan untuk
aktifitas baru
var intent = Intent(this,SecondActivity::class.java)

• Memulai aktivitas dilakukan dengan fungsi


startActivity
startActivity(intent)
Intent
2. Berpindah Aktifitas dengan Membawa data
• Gantikan fungsi pada openMyActivity kelas
MainActivity.kt anda dengan:

private fun openMyActivity() {


var intent = Intent(this,SecondActivity::class.java)
intent.putExtra(EXTRA_NAMA,"Sunaryo")
intent.putExtra(EXTRA_UMUR,27)
startActivity(intent)
}
Intent
2. Berpindah Aktifitas dengan Membawa data
• Tambahkan fungsi pada onCreate pada kelas
SecondActivity.kt anda dengan:
const val EXTRA_NAMA= "EXTRA_NAME"
const val EXTRA_UMUR= "EXTRA_UMUR"

class SecondActivity : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)

var nama = intent.getStringExtra(EXTRA_NAMA)


var umur = intent.getIntExtra(EXTRA_UMUR,-1)
label1.text = "nama : $nama berumur $umur "
}
}
Intent
• Pembahasan Koding
• Perbedaan utama dalam pengiriman Data, adalah
anda akan memanfaatkan pengiriman data Extra
yang disediakan oleh Intent.
• Pengiriman data dilakukan dengan fungsi putExtra
yang terdiri atas pasangan Kunci dan Value

intent.putExtra(EXTRA_NAMA,"Sunaryo")
intent.putExtra(EXTRA_UMUR,27)
Intent
• Pembahasan Koding
• Key yang digunakan harus bersifat public dan
bernilai konstans.
• Pendeklarasian Key selalu dilakukan diatas
program, sebelum memasuki kelas.

const val EXTRA_NAMA= "EXTRA_NAME"


const val EXTRA_UMUR= "EXTRA_UMUR"
Intent
• Pembahasan Koding
• Untuk Pengambilan data pada SecondActivity, dilakukan
dengan fungsi getExtra, sesuai dengan Objek data yang
dikirim
• Pasangan Kunci yang digunakan juga harus sama untuk
memastikan data yang diterima benar
• Kadang, getExtra selain memerlukan Kunci, memerlukan
nilai default ketika kunci tidak ditemukan saat pengiriman
PutExtra dilakukan.
var nama = intent.getStringExtra(EXTRA_NAMA)
var umur = intent.getIntExtra(EXTRA_UMUR,-1)
Intent
3. Berpindah Aktifitas dengan Membawa Objek
• Anda juga dapat mengirimkan data dalam bentuk
objek tertentu, yaitu dengan mengubah objek anda
menjadi objek parcelable
• Untuk membentuk objek parcelable, anda dapat
memanfaatkan anotasi @Parcelize pada kelas
Kotlin
• Untuk menggunakan anotasi @Parcelize pada kelas
kotlin anda perlu mengatur build.gradle dengan
mengaktifkan experimental
Intent
apply plugin: 'com.android.application'
3. Berpindah Aktifitas apply plugin: 'kotlin-android'
dengan Membawa apply plugin: 'kotlin-android-extensions'
Objek android {
• Pada compileSdkVersion 28
defaultConfig {
build.gradle(Modul. …
app) anda, }
tambahkan buildTypes {

androidExtensions { }
experimental = androidExtensions {
true experimental = true
} }
}
Intent
3. Berpindah Aktifitas dengan Membawa Objek
• Buat sebuah kelas kotlin dan bernama Person.kt dan
isikan sebagai berikut:

import android.os.Parcelable
import kotlinx.android.parcel.Parcelize

@Parcelize
data class Person(val nama: String,
val umur: Int,
val email: String) : Parcelable
Intent
3. Berpindah Aktifitas dengan Membawa Objek
• Gantikan fungsi pada openMyActivity kelas
MainActivity.kt anda dengan:

private fun openMyActivity() {


var intent = Intent(this,SecondActivity::class.java)
var p = Person("Sunaryo",27,"Sunaryo@gmail.com")
intent.putExtra(EXTRA_PERSON,p);
startActivity(intent)
}
Intent
3. Berpindah Aktifitas dengan Membawa Objek
• Tambahkan fungsi pada onCreate pada kelas
SecondActivity.kt anda dengan:

const val EXTRA_PERSON= "EXTRA_PERSON"

class SecondActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)

var p = intent.getParcelableExtra<Person>(EXTRA_PERSON)
label1.text = "Nama : ${p.nama} berumur ${p.umur} " +
"alamat surel ${p.email}"
}
}
Intent
• Pembahasan Koding
• Pada saat anda membentuk objek dari kelas
Person, anda telah membuat sebuah kelas yang
bersifat Parcelable.
• Kelas yang bersifat Parcelable dapat dikirimkan
melalui pengiriman data Extra

var p = Person("Sunaryo",27,"Sunaryo@gmail.com")
intent.putExtra(EXTRA_PERSON,p);
Intent
• Pembahasan Koding
• Untuk pengambilan data parcelable, anda dapat
meggunakan fungsi dari intent, yaitu
getParcelableExtra
• Fungsi ini akan mengembalikan objek yang telah di
parcelable sebelumnya, menjadi objek yang pada
contoh ini adalah objek person

var p = intent.getParcelableExtra<Person>(EXTRA_PERSON)
Intent
4. Menjalankan Intent Implicit
• Menjalankan Internt ini, sama seperti pada Intent
Implicit pada semester sebelumnya, yaitu anda
harus mengetahui nama Intent yang digunakan
untuk menjalankan aplikasi yang telah tersedia
didalam Sistem Android
• Salah satu contoh yang dapat anda gunakan adalah
menggunakan implicit Mengirim SMS
Intent
4. Menjalankan Intent Implicit
• Gantikan fungsi pada openMyActivity kelas
MainActivity.kt anda dengan:

private fun openMyActivity() {


val uri = Uri.parse("smsto:087748447774")
val intent = Intent(Intent.ACTION_SENDTO, uri)
intent.putExtra("sms_body",
"Hello, Selamat datang di Android Kotlin")
startActivity(intent)
}
Intent
4. Menjalankan Intent Implicit
Implementasi intent implicit
tesebut, akan menjalankan
fungsi SMS yang telah
disediakan di dalam sistem
android, sesuai nomor uri yang
diberikan
val uri = Uri.parse
("smsto:087748447774")
val intent = Intent
(Intent.ACTION_SENDTO, uri)
Intent
4. Menjalankan Intent Implicit
Untuk isi pesan, anda dapat menambahkan pengiriman
ekstra dengan pasangan key harus “sms_body” yang
diikuti value berupa isi pesan
intent.putExtra("sms_body",
"Hello, Selamat datang di Android Kotlin")
Intent
5. Mengembalikan nilai meggunakan fungsi finish
• Anda dapat mengirimkan hasil dari aktivitas kedua
kembali ke aktifitas pemanggil sebelum aktivitas kedua
ditutup dengan memanggil metode finish().
Intent
5. Mengembalikan nilai
meggunakan fungsi
finish
• Kondisikan
activity_second.xml
sebagai berikut
Intent
<LinearLayout
android:id="@+id/layout1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="200dp">
<TextView
android:id="@+id/label1"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="Masukkan Teks : "/>
<EditText
android:id="@+id/txtbox1"
android:layout_width="250dp"
android:layout_height="49dp"
android:layout_toRightOf="@id/label1"/>
</LinearLayout>
Intent
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/finishBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="finish"
android:layout_centerInParent="true"/>
</RelativeLay
Intent
5. Mengembalikan nilai meggunakan fungsi finish
• Gantikan fungsi pada openMyActivity kelas
MainActivity.kt anda dengan:

private fun openMyActivity() {


val intent = Intent(this, SecondActivity::class.java)
startActivityForResult(intent, REQUEST_CODE)
}
Intent
5. Mengembalikan nilai meggunakan fungsi finish
• Tambahkan parameter di kelas MainActivity.kt
anda dengan:

const val REQUEST_CODE = 101

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {


super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

startActivity.setOnClickListener { openMyActivity() }
}
Intent
5. Mengembalikan nilai meggunakan fungsi finish
• Ubah kelas SecondActivity.kt anda dengan:
const val EXTRA_TEXT_RESULT= "EXTRA_TEXT"
const val EXTRA_CANCEL= -1000
const val EXTRA_RESULT= 92

class SecondActivity : AppCompatActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)

finishBtn.setOnClickListener { sendResult() }
}
Intent
5. Mengembalikan nilai meggunakan fungsi finish
• Ubah kelas SecondActivity.kt anda dengan:
private fun sendResult() {
var IntentRes = Intent()
var myText = txtbox1.text.toString();
if(myText.isEmpty())
setResult(EXTRA_CANCEL)
else {
IntentRes.putExtra(EXTRA_TEXT_RESULT, myText)
setResult(EXTRA_RESULT, IntentRes)
}
finish()
}
}
Intent
5. Mengembalikan nilai meggunakan fungsi finish
• Ubah fungsi pada onActivityResult kelas
MainActivity.kt anda dengan:
override fun onActivityResult(requestCode: Int,
resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(REQUEST_CODE==requestCode) {
if (resultCode == EXTRA_RESULT) {
if (data != null) {
textResult.text =
data.getStringExtra(EXTRA_TEXT_RESULT)
}
}
else if(resultCode == EXTRA_CANCEL) {
textResult.text = "Data Kosong"
}
}
}
Intent
• Pembahasan Koding
• Untuk menerima hasil dari aktifitas kedua, anda harus
memulai aktifitas kedua menggunakan perintah
startActivityForResult() yang membutuhkan dua parameter,
yaitu intent Aktifitas ke dua dan sebuah REQUEST_CODE
• Nilai REQUEST_CODE dibebaskan untuk diberikan, sesuai
dengan kebutuhan aplikasi
• Apa fungsi REQUEST_CODE ini?
startActivityForResult(intent, REQUEST_CODE)
Intent
• Pembahasan Koding
• Hasil pengembalian data dari aktifitas kedua, diperoleh
dengan mengoverride sebuah metode onActivityResult()
yang terdiri dari tiga parameter, yaitu
1. requestCode yang dikirim saat startActivityForResult()
2. resultCode yaitu kode yang dikirimkan oleh aktivitas
kedua melalui perintah setResult()
3. Data yaitu data yang dikirimkan dari aktifitas kedua
override fun onActivityResult(requestCode: Int,
resultCode: Int, data: Intent?) {
Intent
• Pembahasan Koding
• Anda memerlukan sebuah objek Intent kosong tanpa
parameter
• Sebelum perintah finish() anda dapat mengirimkan
beberapa resultCode melalui fungsi setResult() yang akan
ditangkap pada fungsi onActivityResult()
var IntentRes = Intent()
var myText = txtbox1.text.toString();
if(myText.isEmpty())
setResult(EXTRA_CANCEL)
else {
IntentRes.putExtra(EXTRA_TEXT_RESULT, myText)
setResult(EXTRA_RESULT, IntentRes)
}
finish()
Intent
• Pembahasan Koding
• Pengiriman data hasil dilakukan melalui objek intent dengan
mengirimkan paket data Extra yang akan ditangkap oleh
parameter data pada onActivityResult()

var IntentRes = Intent()


var myText = txtbox1.text.toString();
if(myText.isEmpty())
setResult(EXTRA_CANCEL)
else {
IntentRes.putExtra(EXTRA_TEXT_RESULT, myText)
setResult(EXTRA_RESULT, IntentRes)
}
finish()

• Apa fungsi dari method finish()?


Latihan 2
1. Buat sebuah kelas parcelable untuk serbuah kelas
Pizza, yang terdiri atas sebuah enum topping,
nama pizza dan harga
2. Kirimkan Data dalam parcelable dari aktivitas
kedua, ke aktivitas Utama
Latihan 2

Aktivitas Utama Aktivitas Kedua

Aktivitas Utama
Latihan 3
Buat kelas intent implicit untuk (pilih 3 dari 8)
• Membuat Telepon
• Mengirim Email (Phone Email)
• Mengirim Email (Gmail)
• Membuka sebuah Website
• Membuka Google Play Store
• Membuka Google Maps
• Mengambil Foto Capture Photo
• Berbagi Kontent
Apakah anda tau fungsi Shortcut
pada Android Studio?
• Pencarian :
• Ctrl + F : Pencarian teks dalam sebuah file
• Ctrl + Shift + F : Pencarian teks di seluruh projek
• Ctrl + R : mengganti teks di dalam file
Apakah anda tau fungsi Shortcut
pada Android Studio?
• Navigasi
• Ctrl + N : navigasi ke kelas
• Ctrl + Shift + N : navigasi ke file
• Ctrl + B : navigasi ke file dari teks yang terpilih
• Alt + ↑ : navigasi ke metode sebelumnya
• Alt + ↓ : navigasi ke metode sesudahnya
• Ctrl + G : lompat ke baris tertentu
• Ctrl + E : Navigasi file yang baru dibuka
• Ctrl + Klik Kanan / Ctrl + Alt + F7 : Navigasi ke variable/objek yang di klik
• Alt + F7 / Ctrl + F7 : Navigasi ke semua variable / objek yang dipilih
• Ctrl + Shift + B : Menavigasi ke implementasi dari variable / objek yang
dipilih
Apakah anda tau fungsi Shortcut
pada Android Studio?
• Koding
• Ctrl + D : mengandakan bagian yang terpilih
• Ctrl + Q : melihat dokumentasi objek jika ada
• Ctrl + P : melihat isi parameter dari sebuah metode
• Ctrl + Space : Memberikan Saran untuk melengkapi
koding
• Ctrl + Shift + Space : Memberikan Saran yang lebih
lengkap untuk melengkapi koding
• Alt + Insert : Menghasilkan code, terutama saat
membentuk konstraktor dan getter atau setter
• Ctrl + Alt + L : merapikan kode
Apakah anda tau fungsi Shortcut
pada Android Studio?
• Menjalankan Program
• Ctrl + F9 : build Project
• Ctrl + Shift + F9 : kompilasi berkas dan package
• Shift + F10 : Run
• Shift + F9 : Debug

Anda mungkin juga menyukai