Daftar Isi:
Video: Belajar Java Dari Awal - 5 - Struktur Percabangan IF, ELSE dan ELSE IF Pada Pemrograman Java 2024
Saat memulai proyek Java baru, Android Studio menawarkan untuk membuat aktivitas untuk proyek Anda. Android Studio menawarkan beberapa jenis aktivitas yang berbeda, seperti Aktivitas Dasar, Aktivitas Kosong, Aktivitas Login, dan sebagainya. Jika Anda meminta Aktivitas Kosong, Anda mendapatkan kode ini:
paket com. allyourcode a10_11;
impor android mendukung. v7. aplikasi. AppCompatActivity;
impor android. os. Bundel;
public class MainActivity memperluas AppCompatActivity {
@Override
protected void onCreate (Bundle savedInstanceState) {
super. onCreate (savedInstanceState);
setContentView (tata letak R. Aktivitas_main);
}
}
Kode tersebut menyatakan sebuah kelas bernama
MainActivity
. Nama ini
MainActivity
bukan bagian dari pustaka Android API. Ini adalah nama yang Anda buat saat membuat proyek Android baru. (Sebenarnya, Android Studio membuat nama Anda menerima namanya atau mengubahnya menjadi beberapa nama lain saat Anda mengikuti langkah-langkah untuk membuat proyek baru.
Kelas
MainActivity
memperluas kelas yang termasuk ke perpustakaan SDK Android, yaitu kelas
AppCompatActivity
. Dengan kata lain, objek
MainActivity
adalah objek
AppCompatActivity
. Objek
MainActivity
memiliki semua hak dan tanggung jawab yang dimiliki oleh instance
AppCompatActivity
. Misalnya,
MainActivity
memiliki metode
onCreate
, yang diganti.
Sebenarnya, kelas
MainActivity
mewarisi sekitar 460 baris kode dari kelas
AppCompatActivity
Android, yang mewarisi sekitar 1, 000 baris dari Android
Kelas FragmentActivity
, yang mewarisi sekitar 6, 700 baris dari kelas Aktivitas Android. Metode yang diwariskan meliputi yang seperti
getCallingActivity
,
getCallingPackage
,
getParent
,
getTitle
,
getTitleColor
,
getWindow
,
onBackPressed
,
onKeyDown
,
onKeyLongPress
,
onLowMemory
,
onMenuItemSelected
,
setTitle <,
setTitleColor
,
startActivity
, selesai, dan masih banyak lagi. Anda mewarisi semua fungsi ini dengan dua kata sederhana: meluas
AppCompatActivity
.
Dalam terminologi hubungan keluarga, kelas
MainAktivitas
Anda adalah keturunan kelas
Aktivitas
di Android. Kelas
MainAktivitas
Anda adalah
Aktivitas
.
Gambar ini, yang diambil langsung dari dokumentasi online Android, merangkum informasi ini tentang kelas
AppCompatActivity
.
Pohon keluarga AppCompatAktivitas.
Selain menjadi subkelas, kelas
AppCompatActivity
menerapkan sekelompok antarmuka, termasuk antarmuka
AppCompatCallback
, antarmuka
TaskStackBuilder
, dan yang lainnya. Anda tidak perlu mengingat semua ini. Jika Anda perlu mengetahuinya, Anda bisa mencarinya di halaman dokumentasi Android.
kata kunci super Java, ditinjau kembali
Kata
super
singkatan dari konstruktor superkelas. Kode yang berbeda menggunakan kata kunci
super
dengan cara yang berbeda. Ya,
super
selalu ada hubungannya dengan kelas orang tua kelas. Tapi, tidak,
super
tidak selalu mengacu pada konstruktor kelas induk.
Dengan metode
onCreate
, panggilan
super. onCreate (savedInstanceState)
mengirim
savedInstanceState
ke metode kelas induk
onCreate
. Kelas induknya adalah kelas
AppCompatActivity
. Jadi Java memanggil metode
AppCompatActivit
y class
onCreate
.
Metode
AppCompatActivity
class's
onCreat
e berisi panggilannya sendiri untuk
super. onCreate (savedInstanceState)
. Orang tua kelas
AppCompatActivity
adalah kelas
FragmentActivity
. Jadi, Java melewati
savedInstanceState
ke metode
FragmentActivity
kelas
onCreate
. Dan seterusnya.
Tidak sampai Anda mencapai kelas
Aktivitas
- nenek moyang kelas M agusta Anda - bahwa kode tersebut menggunakan variabel
savedInstanceState
secara langsung. Dari informasi
savedInstanceState
ini, kodenya mengembalikan aktivitas sebelum sistem menghancurkannya.
Casting, lagi
Saat Anda menelepon
findViewById
, Java tidak tahu jenis tampilan apa yang akan ditemukannya. Metode
selalu mengembalikan instance
View
, namun banyak kelas Android memperluas kelas
View
. Sebagai contoh, kelas
Button
,
TextView
,
ImageView
,
Kotak Centang
,
Chronometer
, dan
RatingBar
semua memperpanjang kelas
View
Android. Jika Anda mengetikkan kode berikut:
// JANGAN LAKUKAN INI! !
TextView textView;
textView = findViewById (R. Id. TeksView);
Java membuat raungan yang nyaring dan bergema: "Berani-beraninya Anda berasumsi bahwa objek yang dikembalikan oleh sebuah panggilan ke
findViewById
merujuk pada sebuah instance dari kelas
TextView
! "(Sebenarnya, Java dengan diam-diam dan secara mekanis menampilkan pesan kesalahan
Ketidaksesuaian Jenis
di editor Android Studio.
Mempersempit
berarti mencoba menetapkan nilai panjang ke > int
nilai. Nilai panjang
memiliki 64 bit, dan nilai
int
hanya memiliki 32 bit. Jadi usaha penyempitan gagal. Dalam kode yang Anda temukan di sini, panggilan findViewById
yang buruk adalah upaya lain untuk melakukan penyempitan - menetapkan nilai
View
yang dikembalikan oleh pemanggilan metode ke variabel
TextView
.Kelas
TextView
adalah subkelas dari kelas
View
, jadi tugasnya gagal total.
menenangkan dewa-dewa di Jawa dengan menambahkan operator casting ke kode tersebut. Anda memberi tahu Java untuk mengubah apa pun yang muncul dari metode findViewById
ke objek
TextView
.
textView =
(TextView)
findViewById (R. Id textView1);
Saat Anda mengetik kode, Java akan menghibur Anda dan berkata, "Operator casting Anda menunjukkan kepada saya bahwa Anda menyadari perbedaan antara
TextView
dan
View
. Saya akan melakukan yang terbaik untuk menafsirkan objek View yang saya temukan saat runtime sebagai objek
TextView
. "Sebenarnya, saat Anda mengetik kode, Java tidak mengatakan apa-apa. Fakta bahwa Java tidak menampilkan pesan kesalahan saat Anda menggunakan trik casting ini adalah pertanda baik. Fitur casting Java menghemat hari!)
Casting mencegah Anda melihat pesan kesalahan saat Anda mengembangkan kode Anda. Dengan cara itu, casting merupakan fitur yang cukup berguna di Jawa. Tapi casting tidak bisa menyelamatkan Anda jika kode Anda berisi kesalahan runtime. Ketika Anda mengetik
textView = (TextView) findViewById (R. id textView1);
Anda memverifikasi bahwa
textView
mewakili widget
TextView
. Saat aplikasi berjalan, Java meraih
R. id. textView
widget dari
activity_main. xml
, dan semuanya bekerja dengan baik. Tapi terkadang Anda lupa memeriksa
R Anda. java
nama terhadap komponen dalam file XML. Sebuah panggilan ke
findViewById
secara mengejutkan meludahkan komponen
Button
saat casting Anda memberitahu Java untuk mengharapkan widget
TextView
. Ketika ini terjadi, Java tersedak operator casting dan aplikasi Anda macet selama menjalankannya. Kembali ke papan gambar!
selalu mengembalikan instance
View
, namun banyak kelas Android memperluas kelas
View
. Sebagai contoh, kelas
Button
,
TextView
,
ImageView
,
Kotak Centang
,
Chronometer
, dan
RatingBar
semua memperpanjang kelas
View
Android. Jika Anda mengetikkan kode berikut:
// JANGAN LAKUKAN INI! !
TextView textView;
textView = findViewById (R. Id. TeksView);
Java membuat raungan yang nyaring dan bergema: "Berani-beraninya Anda berasumsi bahwa objek yang dikembalikan oleh sebuah panggilan ke
findViewById
merujuk pada sebuah instance dari kelas
TextView
! "(Sebenarnya, Java dengan diam-diam dan secara mekanis menampilkan pesan kesalahan
Ketidaksesuaian Jenis
di editor Android Studio.
Mempersempit
berarti mencoba menetapkan nilai panjang ke > int
nilai. Nilai panjang
memiliki 64 bit, dan nilai
int
hanya memiliki 32 bit. Jadi usaha penyempitan gagal. Dalam kode yang Anda temukan di sini, panggilan findViewById
yang buruk adalah upaya lain untuk melakukan penyempitan - menetapkan nilai
View
yang dikembalikan oleh pemanggilan metode ke variabel
TextView
.Kelas
TextView
adalah subkelas dari kelas
View
, jadi tugasnya gagal total.
menenangkan dewa-dewa di Jawa dengan menambahkan operator casting ke kode tersebut. Anda memberi tahu Java untuk mengubah apa pun yang muncul dari metode findViewById
ke objek
TextView
.
textView =
(TextView)
findViewById (R. Id textView1);
Saat Anda mengetik kode, Java akan menghibur Anda dan berkata, "Operator casting Anda menunjukkan kepada saya bahwa Anda menyadari perbedaan antara
TextView
dan
View
. Saya akan melakukan yang terbaik untuk menafsirkan objek View yang saya temukan saat runtime sebagai objek
TextView
. "Sebenarnya, saat Anda mengetik kode, Java tidak mengatakan apa-apa. Fakta bahwa Java tidak menampilkan pesan kesalahan saat Anda menggunakan trik casting ini adalah pertanda baik. Fitur casting Java menghemat hari!)
Casting mencegah Anda melihat pesan kesalahan saat Anda mengembangkan kode Anda. Dengan cara itu, casting merupakan fitur yang cukup berguna di Jawa. Tapi casting tidak bisa menyelamatkan Anda jika kode Anda berisi kesalahan runtime. Ketika Anda mengetik
textView = (TextView) findViewById (R. id textView1);
Anda memverifikasi bahwa
textView
mewakili widget
TextView
. Saat aplikasi berjalan, Java meraih
R. id. textView
widget dari
activity_main. xml
, dan semuanya bekerja dengan baik. Tapi terkadang Anda lupa memeriksa
R Anda. java
nama terhadap komponen dalam file XML. Sebuah panggilan ke
findViewById
secara mengejutkan meludahkan komponen
Button
saat casting Anda memberitahu Java untuk mengharapkan widget
TextView
. Ketika ini terjadi, Java tersedak operator casting dan aplikasi Anda macet selama menjalankannya. Kembali ke papan gambar!