Siapa pun dapat membantu saya untuk tahu tentang Bundle savedInstanceState
di onCreate(Bundle savedInstanceState)
Saya newbie di Android. Saya mencoba memahaminya dari developer.android.com. Tapi saya tidak bisa mengerti. Adakah yang bisa menyederhanakannya?
122
Jawaban:
Jika Anda menyimpan status aplikasi dalam sebuah bundel (biasanya non-persisten, data dinamis dalam
onSaveInstanceState
), itu bisa diteruskan kembali keonCreate
jika aktivitas perlu dibuat ulang (misalnya, perubahan orientasi) sehingga Anda tidak kehilangan ini sebelumnya informasi. Jika tidak ada data yang diberikan,savedInstanceState
bernilai null.sumber
sumber
onCreate(Bundle savedInstanceState)
Anda akan mendapatkanBundle
null saat aktivitas dimulai pertama kali dan akan digunakan saat orientasi aktivitas diubah .......http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
Android menyediakan cara elegan lain untuk mencapai ini. Untuk mencapai ini, kita harus mengganti metode yang dipanggil
onSaveInstanceState()
. Platform Android memungkinkan pengguna untuk menyimpan status instance apa pun. Status instance dapat disimpan di Bundle. Bundel diteruskan sebagai argumen ke metode onSaveInstanceState.kita dapat memuat status instance yang disimpan dari Bundle yang diteruskan sebagai argumen ke
onCreate
metode. Kita juga dapat memuat status instance yang disimpan dalamonRestoreInstanceState
metode. Tapi saya akan meninggalkan itu untuk para pembaca untuk mengetahuinya.sumber
savedInstanceState
akan menjadi non-null
jikaonSavedInstanceState()
sebelumnya dipanggil. perubahan orientasi hanyalah satu contoh di mana hal ini mungkin terjadi.Bundle
argumen keonCreate(Bundle)
akan menjadi non-null
jika dan hanya jika metodeActivity
had ituonSaveInstanceState
dipanggil sebelumnya. Ini terjadi selama perubahan orientasi ... dan juga terjadi saat aktivitas kembali setelah dimatikan oleh OS, dan saat Anda memicu perubahan konfigurasi lain yang diinginkan pada perangkat Anda.Seperti yang dijawab Dhruv Gairola, Anda dapat menyimpan status aplikasi dengan menggunakan Bundle storedInstanceState. Saya mencoba memberikan contoh yang sangat sederhana yang dapat dipahami oleh pelajar baru seperti saya dengan mudah.
Misalkan, Anda memiliki fragmen sederhana dengan TextView dan Button. Setiap kali Anda mengklik tombol, teks berubah. Sekarang, ubah orientasi perangkat / emulator Anda dan perhatikan bahwa Anda kehilangan data (artinya data yang diubah setelah Anda mengklik yang didapat) dan fragmen dimulai seperti yang pertama kali lagi. Dengan menggunakan Bundle storedInstanceState kita bisa menyingkirkan ini. Jika Anda melihat siklus hidup fragmen. Fragment Lifecylce Anda akan mendapatkan bahwa metode "onSaveInstanceState" dipanggil saat fragmen akan dimusnahkan.
Jadi, kita bisa menyimpan keadaan berarti nilai teks yang diubah ke dalam bundel itu seperti ini
Setelah Anda membuat orientasi, metode "onCreate" akan dipanggil bukan? jadi kita bisa melakukan ini
Sekarang, Anda tidak akan kehilangan nilai Anda setelah orientasi. Nilai yang diubah akan selalu ditampilkan.
sumber
Fungsi onCreate (Bundle storedInstanceState) di Android:
1) Saat aktivitas pertama kali memanggil atau diluncurkan, metode onCreate (Bundle storedInstanceState) bertanggung jawab untuk membuat aktivitas.
2) Kapan pun orientasi (yaitu dari horizontal ke vertikal atau vertikal ke horizontal) aktivitas berubah atau ketika Aktivitas dihentikan secara paksa oleh Sistem Operasi apa pun, maka saveInstanceState yaitu objek Bundle Class akan menyimpan status Aktivitas.
3) Setelah Orientasi diubah, onCreate (Bundle storedInstanceState) akan memanggil dan membuat ulang aktivitas dan memuat semua data dari storedInstanceState.
4) Pada dasarnya kelas Bundle digunakan untuk menyimpan data aktivitas setiap kali kondisi di atas terjadi dalam aplikasi.
5) onCreate () tidak diperlukan untuk aplikasi. Tapi alasannya digunakan dalam aplikasi adalah karena metode itu adalah tempat terbaik untuk meletakkan kode inisialisasi.
6) Anda juga bisa meletakkan kode inisialisasi Anda di onStart () atau onResume () dan ketika aplikasi Anda memuat pertama, itu akan bekerja sama seperti di onCreate ().
sumber
onCreate(Bundle)
dipanggil saat aktivitas pertama kali dimulai. Anda dapat menggunakannya untuk melakukan inisialisasi satu kali seperti membuat antarmuka pengguna.onCreate()
mengambil satu parameter yang merupakan null atau beberapa informasi negara yang sebelumnya disimpan olehonSaveInstanceState
.sumber
onCreate (Bundle storedInstanceState) dipanggil dan disimpanInstanceState tidak akan null jika Aktivitas Anda dan diakhiri dalam skenario (tampilan visual) yang dijelaskan di atas. Aplikasi Anda kemudian dapat mengambil (menangkap) data dari storedInstanceState dan membuat ulang Aktivitas Anda
sumber