Bagaimana cara meneruskan nilai dari satu layar ke layar sebelumnya?
Pertimbangkan kasus ini: Saya memiliki dua aktivitas. Layar pertama memiliki satu TextView
tombol dan aktivitas kedua memiliki satu EditText
tombol.
Jika saya klik tombol pertama maka harus pindah ke aktivitas kedua dan di sini pengguna harus mengetikkan sesuatu di kotak teks. Jika dia menekan tombol dari layar kedua maka nilai dari kotak teks akan berpindah ke aktivitas pertama dan itu harus ditampilkan di aktivitas pertama TextView
.
android
android-activity
Kumar
sumber
sumber
Jawaban:
Untuk menangkap tindakan yang dilakukan pada satu Aktivitas di dalam lainnya membutuhkan tiga langkah.
Luncurkan Aktivitas sekunder (Aktivitas 'Edit Teks' Anda) sebagai subaktivitas dengan menggunakan
startActivityForResult
dari Aktivitas utama Anda.Dalam subaktivitas, daripada hanya menutup Aktivitas saat pengguna mengklik tombol, Anda perlu membuat Intent baru dan menyertakan nilai teks yang dimasukkan ke dalam paket ekstra. Untuk meneruskannya kembali ke panggilan induk
setResult
sebelum memanggilfinish
untuk menutup Aktivitas sekunder.Langkah terakhir adalah memanggil Activity: Override
onActivityResult
untuk mendengarkan callback dari Activity entri teks. Dapatkan ekstra dari Intent yang dikembalikan untuk mendapatkan nilai teks yang harus Anda tampilkan.sumber
new Intent(null);
"terlalu ambigu" dan saya harus mengubahnya menjadinew Intent();
.Ada beberapa cara untuk mengakses variabel atau objek di kelas atau Aktivitas lain.
A. Basis Data
B. preferensi bersama.
C. Serialisasi objek.
D. Sebuah kelas yang dapat menampung data umum dapat disebut sebagai Common Utilities itu tergantung pada Anda.
E. Meneruskan data melalui Intents dan Parcelable Interface.
Itu tergantung pada kebutuhan proyek Anda.
A. Basis Data
SQLite adalah Open Source Database yang tertanam di Android. SQLite mendukung fitur database relasional standar seperti sintaks SQL, transaksi, dan pernyataan yang disiapkan.
Tutorial - http://www.vogella.com/articles/AndroidSQLite/article.html
B. Preferensi Bersama
Misalkan Anda ingin menyimpan username. Jadi sekarang akan ada dua hal yang Key Username, Value Value.
Bagaimana cara menyimpan
Dengan menggunakan putString (), putBoolean (), putInt (), putFloat (), putLong () Anda dapat menyimpan dtatype yang Anda inginkan.
Bagaimana cara mengambil
http://developer.android.com/reference/android/content/SharedPreferences.html
C. Serialisasi Objek
Serlisasi objek digunakan jika kita ingin menyimpan status objek untuk dikirim melalui jaringan atau Anda juga dapat menggunakannya untuk tujuan Anda.
Gunakan kacang java dan simpan di dalamnya sebagai salah satu ladangnya dan gunakan getter dan setter untuk itu
JavaBeans adalah kelas Java yang memiliki properti. Pikirkan properti sebagai variabel instance pribadi. Karena bersifat pribadi, satu-satunya cara agar dapat diakses dari luar kelas adalah melalui metode di kelas. Metode yang mengubah nilai properti disebut metode penyetel, dan metode yang mengambil nilai properti disebut metode pengambil.
Tetapkan variabel di metode email Anda dengan menggunakan
Kemudian gunakan serialisasi objek untuk membuat serial objek ini dan di kelas Anda yang lain deserialisasi objek ini.
Dalam serialisasi, suatu objek dapat direpresentasikan sebagai urutan byte yang mencakup data objek serta informasi tentang tipe objek dan tipe data yang disimpan dalam objek.
Setelah objek berseri telah ditulis ke dalam file, itu dapat dibaca dari file dan deserialisasi yaitu, informasi jenis dan byte yang mewakili objek dan datanya dapat digunakan untuk membuat ulang objek dalam memori.
Jika Anda menginginkan tutorial untuk ini, lihat tautan ini
http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html
Dapatkan variabel di kelas lain
D. CommonUtilities
Anda dapat membuat kelas sendiri yang dapat berisi data umum yang sering Anda perlukan dalam proyek Anda.
Sampel
E. Meneruskan Data melalui Maksud
Silakan lihat tutorial ini untuk opsi melewatkan data ini.
http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/
sumber
kamu tidak harus ...
Panggil saja newIntent () dari aktivitas kedua
Tambahkan data untuk dikirimkan kembali
Lanjutkan dengan setResult
Dan kemudian bisa selesai
sumber
startActivityForResult ()
Dan berikut ini tautan dari SDK dengan informasi lebih lanjut:
http://developer.android.com/guide/appendix/faq/commontasks.html#opennewscreen
dan gulir ke bawah ke bagian berjudul "Mengembalikan Hasil dari Layar"
sumber
Saya sering menggunakan variabel statis dalam aktivitas pemanggilan dengan metode penyetel statis untuk menyetelnya.
Dengan cara ini saya dapat mengubah nilai dalam aktivitas apa pun sesuka hati, terlepas dari aliran kontrol yang tepat antara berbagai aktivitas.
Perhatikan bahwa trik ini hanya dapat digunakan jika Anda tidak peduli dengan instantiasi lebih dari satu salinan aktivitas (kelas) yang sama dalam aplikasi, namun menurut saya ini yang paling mudah untuk diterapkan, dan saya paling sering menggunakannya .
sumber
Cara terbaik untuk melakukannya di sini adalah dengan meletakkan variabel ke kelas umum yang didefinisikan di luar ruang lingkup
di dalam kode Anda (mis. OnButtonClick dll ...)
di dalam kode
@Override public void onActivityResult (int requestCode, int resultCode, Intent data) {if (requestCode == Keys.PICK_CONTACT) {if (resultCode == Activity.RESULT_OK) {Uri contactData = data.getData ();
sumber