Hallo semuanya, sudah lama sekali tidak menyempatkan diri menulis diblog Xamarin Indonesia. Pada kesempatan kali ini saya akan membahas salah satu komponen yang dimiliki android xamarin yaitu Intent. Intent sendiri secara garis besar adalah sebuah metode yang dapat kita gunakan untuk mengirimkan passing data antar activity atau fragment. Misalkan contohnya adalah ketika kita melakukan aktifitas login dengan username dan password, selain data itu kita pun bisa passing data field laiinya misalkan field id_level untuk mengatur hak akses . Atau mungkin lebih mudahnya adalah saat kita mengakses sebuah data listview ketika kita onClick Items kita akan diarahkan menuju halaman detail karena sudah diberikan passing id.
Yap, dari pada pusing berkepanjangan so, kita langsung praktek saja ya.
Langkah 1
Buatlah sebuah Project Baru dengan nama AppIntent dengan Minimum Android JellyBean SDK nya
Langkah 2
Tambahkan componen JSON.NET pada Get More Componentnya dan Instalkan pada project kalian
Langkah 3
Sebelum kita coding csharp xamarin, kita siapkan beberapa tabel database pada server anda dengan tabel sebagai berikut :
CREATE TABLE `tb_anggota` ( `id` int(11) NOT NULL, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `nama` varchar(255) NOT NULL, `alamat` text NOT NULL, `id_level` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tb_anggota` -- INSERT INTO `tb_anggota` (`id`, `username`, `password`, `nama`, `alamat`, `id_level`) VALUES (1, 'agus', 'agus', 'agus', 'jakarta', 2), (2, 'admin', 'admin', 'administrator', 'jakarta', 1); -- -------------------------------------------------------- -- -- Table structure for table `tb_level` -- CREATE TABLE `tb_level` ( `id_level` int(11) NOT NULL, `nama_level` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tb_level` -- INSERT INTO `tb_level` (`id_level`, `nama_level`) VALUES (1, 'admin'), (2, 'anggota'); -- -------------------------------------------------------- -- -- Table structure for table `tb_produk` -- CREATE TABLE `tb_produk` ( `id` int(11) NOT NULL, `nama_produk` varchar(255) NOT NULL, `harga` int(11) NOT NULL, `qty` int(11) NOT NULL, `keterangan` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tb_produk` -- INSERT INTO `tb_produk` (`id`, `nama_produk`, `harga`, `qty`, `keterangan`) VALUES (1, 'Laptop MacBook Pro 2017', 18000000, 100, 'Laptop terbaik 2017'), (2, 'Microsoft Surface Pro', 30000000, 100, 'Laptop Mahal performa menantang'), (3, 'SSD 1 GB Samsung', 2000000, 50, 'SSD Tercepat 2017'), (4, 'Hardisk Toshiba 1 TB', 1000000, 45, 'Hardisk Eksternal'); -- -- Indexes for dumped tables -- -- -- Indexes for table `tb_anggota` -- ALTER TABLE `tb_anggota` ADD PRIMARY KEY (`id`), ADD KEY `id_level` (`id_level`); -- -- Indexes for table `tb_level` -- ALTER TABLE `tb_level` ADD PRIMARY KEY (`id_level`); -- -- Indexes for table `tb_produk` -- ALTER TABLE `tb_produk` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tb_anggota` -- ALTER TABLE `tb_anggota` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; -- -- AUTO_INCREMENT for table `tb_level` -- ALTER TABLE `tb_level` MODIFY `id_level` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; -- -- AUTO_INCREMENT for table `tb_produk` -- ALTER TABLE `tb_produk` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; -- -- Constraints for dumped tables -- -- -- Constraints for table `tb_anggota` -- ALTER TABLE `tb_anggota` ADD CONSTRAINT `tb_anggota_ibfk_1` FOREIGN KEY (`id_level`) REFERENCES `tb_level` (`id_level`); COMMIT;
Anda bisa mengimportnya pada server SQL anda.
Langkah 4
Kemudian Siapkan File PHP sebagai Generate JSON nya nya
koneksi.php
<?php $server = "localhost"; // sesuaikan alamat server anda $user = "nama_userserver"; // sesuaikan user web server anda $password = "Password DB Anda"; // sesuaikan password web server anda $database = "nama_db anda"; // sesuaikan database web server anda $connect = mysql_connect($server, $user, $password) or die ("Koneksi gagal!"); mysql_select_db($database) or die ("Database belum siap!"); ?>
login.php
<?php header('content-type: application/json'); include "koneksi.php"; $username = $_GET['username']; $password = $_GET['password']; $id_level = $_GET['id_level']; $sql="SELECT id,username,password,id_level FROM tb_anggota where username='$username' and password='$password'"; $result=mysql_query($sql); while($hasil=mysql_fetch_assoc($result)) { $output[]=$hasil; } $hasil =json_encode($output); echo "{"login_event":" . $hasil . "}"; ?>
produk.php
<?php header('content-type: application/json'); include "koneksi.php"; $sql="SELECT * FROM tb_produk ORDER BY id DESC"; $result=mysql_query($sql); while($hasil=mysql_fetch_assoc($result)) { $output[]=$hasil; } $hasil =json_encode($output); echo $hasil; ?>
detail_produk.php
<?php header('content-type: application/json'); include "koneksi.php"; $id = $_GET['id']; $sql="SELECT * FROM tb_produk Where id='$id' ORDER BY id DESC"; $result=mysql_query($sql); while($hasil=mysql_fetch_assoc($result)) { $output[]=$hasil; } $hasil =json_encode($output); echo "{"detail_produk":" . $hasil . "}"; ?>
Setelah membuat file .php kemudian lakukan upload ke direktori server anda, dapat juga menggunakan filezilla
Langkah 5
Buka file MainActivity.cs lalu ubah codenya sebagai berikut
using Android.App; using Android.Widget; using Android.OS; using System.Net; using Newtonsoft.Json.Linq; using Android.Content; namespace AppIntent { [Activity(Label = "AppIntent", MainLauncher = true)] public class MainActivity : Activity { public string codeuser; public string level; public string user; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); EditText username = FindViewById<EditText>(Resource.Id.txtUsername); EditText password = FindViewById<EditText>(Resource.Id.txtPassword); Button btnlogin = FindViewById<Button>(Resource.Id.btnLogin); btnlogin.Click += delegate { string xusername = username.Text; string xpassword = password.Text; WebClient client = new WebClient(); //Panggil file php untuk cek login di server mu var jsonstring = client.DownloadString("https://banyu.center/xamarin/login.php?username=" + xusername + "&password=" + xpassword); JObject o = JObject.Parse(jsonstring); var ab = o.GetValue("login_event").ToString(); if (string.IsNullOrWhiteSpace(ab)) { Toast.MakeText(this, "Username dan Password salah", ToastLength.Short).Show(); } else { JArray arr = JArray.Parse(ab); //Ambil nilai variablenya //namalevel = arr[0]["nama_level"].ToString(); codeuser = arr[0]["id"].ToString(); level = arr[0]["id_level"].ToString(); user = arr[0]["username"].ToString(); Toast.MakeText(this, "Login Berhasil", ToastLength.Short).Show(); //Jika login berhasil arahkan ke halaman welcome Intent a = new Intent(this, typeof(WelcomeActivity)); //Buat sebuah parameter yang akan kita kirim ke activity lain a.PutExtra("levelnya", level); StartActivity(a); } }; } } }
MainActivity ini adalah halaman yang akan pertama kali kita jumpai yaitu halaman login. Oleh karena itu kita wajib membuat file layout Main.axml dengan code sbagai berikut
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="20dp"> <TextView android:text="Login Aplikasi" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textView1" android:gravity="center" android:textStyle="bold" android:layout_marginBottom="48.0dp" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/txtUsername" android:hint="Username" /> <EditText android:inputType="textPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/txtPassword" android:hint="Password" /> <Button android:text="Login" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnLogin" android:background="#fff4511e" /> </LinearLayout>
Kita menjumpai code berikut :
//Jika login berhasil arahkan ke halaman welcome Intent a = new Intent(this, typeof(WelcomeActivity)); //Buat sebuah parameter yang akan kita kirim ke activity lain a.PutExtra("levelnya", level); StartActivity(a);
Pertama kita buat sebuah intent yang akan mengarahkan ke halaman WelcomeActivity (Aktivity lain) lalu set parameter yang kita namai dengan levelnya. Isi parameter tersebut berasal dari Parsing JSON yang sudah kita buat sebelumnya dari file login.php ya.
Langkah 6
Pada langkah sebelumnya sudah ada Intent yang mengarahkan ke halaman WelcomeActivity yaitu halaman yang akan diakses setelah login berhasil , dan halaman ini juga sudah dikirimkan levelnya yaitu berisi data id_level. Maka kita harus membuat Activity dengan nama WelcomeActivity.cs beserta layotunya yaitu Welcome.axml
WelcomeActivity.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; namespace AppIntent { [Activity(Label = "WelcomeActivity")] public class WelcomeActivity : Activity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.Welcome); //TextView namalevel = FindViewById<TextView>(Resource.Id.txtLevel); ImageButton btnProduk = FindViewById<ImageButton>(Resource.Id.btnProduk); //ImageButton btnPromo = FindViewById<ImageButton>(Resource.Id.btnPromo); btnProduk.Click += delegate { StartActivity(typeof(ProdukActivity)); }; string c = Intent.GetStringExtra("levelnya"); //string i = Intent.GetStringExtra("idnya"); //Menemukan hak akses if (c == "2") { StartActivity(typeof(ProdukActivity)); } else { StartActivity(typeof(AdminActivity)); } // Create your application here } } }
Welcome.axml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="20dp"> <TextView android:text="Welcome," android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textView1" /> <TextView android:text="Hak Akses" android:layout_width="match_parent" android:layout_height="59.0dp" android:id="@+id/txtLevel" /> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/gridLayout1" android:columnCount="2"> <ImageButton android:src="@drawable/cart" android:id="@+id/btnProduk" android:padding="20dp" /> <ImageButton android:src="@drawable/promo" android:id="@+id/btnPromo" android:padding="20dp" /> </GridLayout> </LinearLayout>
Nah, jika kalian cermati maka kalian akan menemukan code sebagai berikut
string c = Intent.GetStringExtra("levelnya"); //string i = Intent.GetStringExtra("idnya"); //Menemukan hak akses if (c == "2") { StartActivity(typeof(ProdukActivity)); } else { StartActivity(typeof(AdminActivity)); }
Code string c mengambil parameter Put Extra yang berasal dari MainActivity.cs selanjutnya kita buat implikasi yaitu jika c==2 atau id_levelnya 2 maka dianggap sebagai anggota, oleh karena itu diarahkan ke halaman Produk. Sedangkan jika selain 2 maka dianggap admin.
Karena kita membutuhkan halaman Admin maka kita buat
AdminActivity.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; namespace AppIntent { [Activity(Label = "AdminActivity")] public class AdminActivity : Activity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.Admin); // Create your application here } } }
Untuk Layoutnya
Admin.axml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:minWidth="25px" android:minHeight="25px"> <TextView android:text="Selamat Datang, Administrator" android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/textView1" android:gravity="center" /> </LinearLayout>
Selanjutnya : Tutorial Xamarin Android : Intent PHP MySQL Part 2
No comments:
Post a Comment
Mohon melakukan komentar dengan bahasa yang mudah dipahami, santun dan dengan bahasa yang baik.