Di aplikasi saya, saya memiliki TextView
dan EditText
. Keduanya memiliki data di dalamnya. Ketika orientasi layar mengubah data di EditText
sisa - sisa, tetapi TextView
data dihapus.
Dapatkah seseorang membantu saya menemukan cara untuk menyimpan data TextView
juga?
Untuk mempertahankan data pada perubahan orientasi, Anda perlu mengimplementasikan dua metode:
sumber
1) Tidak semua tampilan dengan ID menyimpan statusnya. Widget Android, dengan ID, yang statusnya dapat diubah oleh pengguna, tampaknya menyimpan statusnya dengan cara mematikan. Jadi EditText menyimpan statusnya, tetapi TextView tidak menyimpan statusnya pada soft kill.
"AFAIK, Android hanya mengganggu status penyimpanan untuk hal-hal yang diharapkan berubah. Itulah mengapa ia menyimpan teks dalam EditText (yang kemungkinan besar akan diubah oleh pengguna) dan mungkin tidak menyimpan status untuk TextView (yang biasanya tetap statis ) "
Mark M
Jadi, Anda dapat memilih untuk menyimpan status textview di onSaveInstanceState dan Anda dapat memilih untuk memulihkan status textview di onCreate.
2) Praktik terbaiknya adalah menyimpan status instance non-tampilan "internal" meskipun Anda mendeklarasikan
Dari dokumen:
"Namun, aplikasi Anda harus selalu dapat mematikan dan memulai ulang dengan keadaan sebelumnya secara utuh. Bukan hanya karena ada perubahan konfigurasi lain yang tidak dapat Anda cegah untuk memulai ulang aplikasi Anda, tetapi juga untuk menangani peristiwa seperti saat pengguna menerima panggilan telepon dan kemudian kembali ke aplikasi Anda. "
JAL
sumber
Android tidak menangani hal semacam itu untuk Anda. Anda telah menyimpan semua data secara manual.
Anda dapat menggunakan dalam suatu aktivitas untuk menyimpan nilai
dan menggunakan sesuatu seperti ini dalam metode oncreate dari suatu aktivitas untuk memuat objek yang disimpan
Anda juga dapat memilih menonaktifkan perubahan orientasi untuk suatu aktivitas
sumber
Ubah aktivitas Anda di AndroidManifest.xml untuk mengganti perilaku perubahan orientasi dengan menambahkan ini ke aktivitas / aktivitas Anda:
Ini akan terlihat seperti ini:
sumber
Tambahkan ini ke AndroidManifest.xml
Letakkan Nama Aktivitas Anda di tempat Activity_Name
Ini akan bekerja dengan nilai yang mengubah TextField juga.
sumber
tambahkan saja
ke Aktivitas Anda di AndroidManifest.xml.
sumber
Saat konfigurasi berubah, Android memulai ulang aktivitas Anda secara default. Untuk mengubahnya, Anda harus mengganti
onConfigurationChanged()
metode. Selain itu, Anda harus menambahkanandroid:configChanges
ke file manifes Anda.Anda dapat membaca lebih lanjut di sini .
sumber
Saya juga menggunakan
dan itu tidak berhasil.
Tapi kemudian saya menemukan solusi.
Verifikasi apakah Anda memiliki baris berikut dengan benar di maniest Anda:
pastikan itu tidak membaca sesuatu seperti
Saya mendapatkannya dengan cara kedua di tempat pertama tetapi ketika saya mengoreksinya, statusnya dipertahankan.
sumber