Apa itu "bundel" dalam aplikasi Android

Jawaban:

279

Bundel umumnya digunakan untuk mengirim data antara berbagai aktivitas Android. Itu tergantung pada Anda apa jenis nilai yang ingin Anda sampaikan, tetapi bundel dapat menampung semua jenis nilai dan meneruskannya ke aktivitas baru.

Anda bisa menggunakannya seperti ini:

Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);  
startActivity(intent);

Anda bisa mendapatkan nilai yang diteruskan dengan melakukan:

Bundle extras = intent.getExtras(); 
String tmp = extras.getString("myKey");

Anda dapat menemukan info lebih lanjut di:

samtherock
sumber
3
mengapa tidak langsung menggunakan System.object dan casting?
lovespring
79

Pass data antara aktivitas dengan menggunakan Bundledan Intentobjek.


Pertama Anda membuat Bundleobjek

Bundle b = new Bundle();

Kemudian, kaitkan data string yang disimpan anystringdengan kunci bundel"myname"

b.putString("myname", anystring);

Sekarang, buat Intentobjek

Intent in = new Intent(getApplicationContext(), secondActivity.class);

Pass objek bundel bke maksud

in.putExtras(b);

dan memulai aktivitas kedua

startActivity(in);

Dalam aktivitas kedua, kita harus mengakses data yang dikirimkan dari aktivitas pertama

Intent in = getIntent();

Sekarang, Anda perlu mendapatkan data dari bundel

Bundle b = in.getExtras();

Akhirnya, dapatkan nilai dari data string yang terkait dengan nama kunci "myname"

String s = b.getString("myname");
mahalakshmi
sumber
INI BENAR-BENAR BAIK VERBOSE, TERIMA KASIH.
Abhishek Garg
68

Saya harus menambahkan bahwa bundel digunakan oleh aktivitas untuk meneruskan data ke diri mereka sendiri di masa depan.

Ketika layar berputar, atau ketika aktivitas lain dimulai, metode protected void onSaveInstanceState(Bundle outState)dipanggil, dan aktivitas dihancurkan. Kemudian, instance lain dari aktivitas dibuat, dan public void onCreate(Bundle savedInstanceState)dipanggil. Ketika instance pertama dari aktivitas dibuat, bundel itu nol; dan jika bundel itu bukan nol, aktivitas melanjutkan beberapa bisnis yang dimulai oleh pendahulunya.

Android secara otomatis menyimpan teks dalam bidang teks, tetapi tidak menyimpan semuanya, dan bug yang tidak kentara terkadang muncul.

Anti-pola yang paling umum, adalah mengasumsikan bahwa onCreate()itu hanya inisialisasi. Itu salah, karena itu juga harus mengembalikan keadaan.

Ada opsi untuk menonaktifkan perilaku "re-create activity on rotasi" ini, tetapi itu tidak akan mencegah bug terkait restart, itu hanya akan membuat mereka lebih sulit untuk disebutkan.

Perhatikan juga bahwa satu-satunya metode yang panggilannya dijamin ketika aktivitas akan dihancurkan adalah onPause(). (Lihat grafik siklus hidup aktivitas dalam dokumen.)

18446744073709551615
sumber
Mengapa menggunakan bundel jika kita bisa menggunakan pemetaan? Ted terima kasih!
Ruchir Baronia
4
Bundel tidak hanya digunakan oleh Activity. Ini juga digunakan oleh Fragmen untuk mempertahankan status setelah rotasi.
Kai Wang
47

A Bundlesangat mirip Mapobjek Java yang memetakan Stringkunci nilai. Ini digunakan untuk menyampaikan informasi antara aktivitas dan komponen aplikasi lainnya. Ini juga digunakan oleh kerangka kerja untuk menangkap dan mengembalikan informasi keadaan.

Alasan Android tidak menggunakan objek biasa Mapuntuk ini adalah karena Mapterlalu fleksibel; itu bisa berisi objek (seperti, katakanlah, I / O stream) yang tidak bisa serial. The BundleAPI membatasi jenis objek yang dapat ditambahkan ke bundel dalam sedemikian rupa sehingga isi bungkusan ini dijamin akan serializable. Kerangka kerja Android bergantung pada properti ini.

Saya sarankan Anda membaca dokumentasi tentang Fundamentals Aplikasi . Ini menjelaskan, di antara hal-hal lain, bundel dan maksud apa dan untuk apa mereka digunakan.

Ted Hopp
sumber
14

Bundel dapat digunakan untuk mengirim data sewenang-wenang dari satu aktivitas ke aktivitas lainnya melalui Intents. Saat Anda menyiarkan Intent, Aktivitas yang tertarik (dan BroadcastRecievers lainnya) akan diberitahukan tentang hal ini. Suatu maksud dapat berisi suatu Bundel sehingga Anda dapat mengirim data tambahan bersama dengan Intent.

Bundel adalah pemetaan nilai kunci, jadi dengan cara mereka seperti Hash, tetapi mereka tidak terbatas pada pemetaan objek String / Foo tunggal. Perhatikan bahwa hanya tipe data tertentu yang dianggap "Parcelable" dan mereka secara eksplisit dijabarkan dalam Bundle API.

scriptocalypse
sumber
Sejauh ini, inilah satu-satunya jawaban yang benar-benar mendekati pertanyaan OP, yaitu apa itu bundel. stackoverflow.com/a/6236801/1588163 memberi lebih banyak wawasan.
clapas
Mengapa menggunakan bundel jika kita bisa menggunakan pemetaan? Terima kasih!
Ruchir Baronia
@RuchirBaronia tidak ada alasan khusus untuk menggunakan Bundle kecuali Anda bermaksud meneruskannya ke bagian dari API Android yang membutuhkan objek Bundle.
scriptocalypse
8

Cukup buat bundel,


Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);

DALAM "this_is_the_next_class.class"

Anda dapat mengambil item seperti ini.

Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
Bala Prasanna
sumber
5

Bundel digunakan untuk meneruskan data di antara Aktivitas. Anda dapat membuat bundel, meneruskannya ke Intent yang memulai aktivitas yang kemudian dapat digunakan dari aktivitas tujuan.

GSree
sumber
3

Bundel: - Pemetaan dari nilai String ke berbagai jenis Parcelable.

Bundle umumnya digunakan untuk mengirim data antara berbagai aktivitas android.

ketika kita memanggil onPause () lalu onStop () dan kemudian dalam urutan terbalik onStop () ke onPause ().

Data yang disimpan yang digunakan sistem untuk memulihkan keadaan sebelumnya disebut "keadaan instance" dan merupakan kumpulan pasangan nilai kunci yang disimpan dalam objek Bundle.

Ahmed Ali
sumber
Pemetaan, adalah sifat bundel.
BollMose
2

bundle digunakan untuk berbagi data antar kegiatan, dan untuk menyimpan status aplikasi dalam metode oncreate () sehingga aplikasi akan mengetahui di mana itu dihentikan ... Saya harap ini membantu :)

Sandip Lawate
sumber
0

penggunaan bundel mengirim data dari satu aktivitas ke aktivitas lain dengan bantuan objek maksud; Bundel menyimpan data yang bisa berupa tipe apa saja.

Sekarang saya katakan bahwa cara membuat bundle passing data antara dua aktivitas.

Langkah 1: Aktifitas Pertama

Bundle b=new Bundle();

b.putString("mkv",anystring);

Intent in=new Intent(getApplicationContext(),secondActivity.class);

in.putExtras(b);

startActivity(in);

Langkah 2: Aktifitas Kedua

Intent in=getIntent();

Bundle b=in.getExtras();

String s=b.getString("mkv");

Saya pikir ini berguna untuk Anda ...........

Mahendra Kumar Verma
sumber
0

Bundle tidak hanya untuk mentransfer data antara dua komponen yang berbeda, tetapi yang lebih penting itu digunakan untuk mengembalikan nilai yang disimpan sebelum aktivitas dihancurkan ke dalam aktivitas baru.

seperti teks dalam EditTextwidget atau posisi gulir dari ListView.

Ajay Takur
sumber
0

Aktivitas pertama:

String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());

Aktivitas kedua:

String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");
Cooper
sumber
1
Anda mungkin juga ingin belajar tentang Contoh Minimal, Lengkap, dan Dapat diverifikasi .
Daniel Corzo