- Senin, 15 Januari 2018

Tutorial Xamarin Android : Passing Data / Mengirim Data Antar Activity atau Fragments


Dalam pembuatan aplikasi android kita akan sering menggunakan passing data yaitu mengirimkan sebuah data berupa string dari Activity ke Activity laiinya atau dari Fragment ke Fragment laiinya. Hal itu dapat kita manfaatkan sebagik mungkin untuk keperluan pembuatan aplikasi android. Misalkan saja kita akan mengirimkan sebuah data yang diparsing dari JSON berupa longitude dan latitude dari sebuah ListView, ketika listview on selected maka akan diarahkan ke sebuah Activity untuk menampilkan maps. Nah salah satu contoh diatas bisa menggunakan passing data.

Adapula misalkan kita ingin membuat sebuah pencarian data pada ListView. Sebagai contoh saya punya data produk dimana salah satunya ada sebuah field nama_kota. Maka terlebih dahulu kita buat sebuah Edit Text untuk menampung inputan user nama_kota, lalu simpan inputan tersebut dalam sebuah string lalu kirim ke Activity atau Fragment yang dituju.

Nah, dalam android kita akan sering berinteraksi dengan Fragments dan Activity. Maka ada cara berbeda pula untuk mengirimkan datanya.

Activity ke Activity atau Fragment to Activity

untuk antar activity kita menggunakan Intent yaitu Put Extra. Sebagai contoh :

string level = arr[0]["level"].ToString();
string emails = arr[0]["email"].ToString();

Intent i = new Intent(this.Activity, typeof(MainActivity));

i.PutExtra("level", level);
i.PutExtra("emails", emails);


StartActivity(i);
Pada code diatas kita mengambil data JSON dengan nama level dan email , yang akan kita kirim ke MainActivity. Lalu pada MainActivity kita bisa ambil data yang dikirim dari LoginActivity tersebut dengan cara
string iemail = Intent.GetStringExtra("emails");
string ilevel = Intent.GetStringExtra("level");
Fragment to Fragment atau Activity to Fragment Kita bisa menggunakan Bundle dan Arguments untuk mengirimnya sebagai contoh :
btnSearch.Click += delegate {
                string keyword = search.Text;


                ResultHomeFragment home = new ResultHomeFragment();
                Bundle args = new Bundle();

                args.PutString("kota", keyword);
                home.Arguments = args;

                // Load the fragment
                var trans = Activity.SupportFragmentManager.BeginTransaction();
                // Add the utility screen
                trans.Add(Resource.Id.HomeFrameLayout, home);
                trans.AddToBackStack(null);
                trans.Commit();
                // Add the parameter


            };

Pada code diatas kita menggunakan Fragment, kasusnya adalah kita mengirimkan inputan keyword pada EditText, kemudian data inputan tersebut kita kirim ke Fragment Lain yaitu ResultHomeFragment. Oleh karena itu kita menggunakan Bundle() dan Arguments. Kemudian pada ResultHomeFragment kita bisa ambil data Arguments dengan code berikut ini .

string kota = Arguments.GetString("kota");



Salam

Ipung Purwono