Yap, melajutkan tutorial sebelumnya tentang Navigation Drawer pada xamarin android, next kita akan menambahkan beberapa langkah lagi ya, bagi kalian yang ketinggalan bisa mengikuti tutorial part 1 di Tutorial Xamarin Android : Membuat Navigation Drawer Part 1.
Setelah anda mengikuti langkah-langkah pada part 1, sekarang ikuti langkah selanjutnya.
Langkah 13
Buatlah sebuah fragment dengan nama HomeFragment.cs dengan cara klik kanan pada project anda lalu Pilih add new -> pilih fragment -> Berikan nama dengan HomeFragment.cs lalu masukan code seperti berikut
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.Util; using Android.Views; using Android.Widget; namespace TutorialNavigationDrawer { public class HomeFragment : Android.Support.V4.App.Fragment { public override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Create your fragment here } public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //Menampilkan layout untuk fragment View view = inflater.Inflate(Resource.Layout.homeLayout, container, false); return view; } } }
Langkah 14
Buat kembali sebuah fragment dengan nama WriteFragment.cs dengan code seperti berikut
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.Support.V4.App; using Android.Util; using Android.Views; using Android.Widget; namespace TutorialNavigationDrawer { public class WriteFragment : Android.Support.V4.App.Fragment { public override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Create your fragment here } public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.Inflate(Resource.Layout.writeLayout, container, false); return view; } } }
Langkah 15 Buka file MainActivity.cs lalu ubah code menjadi seperti ini
using Android.Widget; using Android.OS; using Android.Support.Design.Widget; using Android.Support.V4.Widget; using Android.Support.V7.Widget; using Android.Support.V7.App; using Android.Views; using Android.App; using SupportFragment = Android.Support.V4.App.Fragment; using System.Collections.Generic; namespace TutorialNavigationDrawer { [Activity(Label = "NavigationDrawer", MainLauncher = true, Theme = "@style/Temaku")] public class MainActivity : AppCompatActivity { DrawerLayout drawerLayout; private SupportFragment mCurrentFragment; private Stack<SupportFragment> mStackFragment; private HomeFragment homeFragment; private WriteFragment writeFragment; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.Main); drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout); // Membuat konfigurasi Toolbar var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.app_bar); SetSupportActionBar(toolbar); SupportActionBar.SetTitle(Resource.String.app_name); SupportActionBar.SetDisplayHomeAsUpEnabled(true); SupportActionBar.SetDisplayShowHomeEnabled(true); // Memasukan item yang terseleksi agar masuk di navigasi var navigationView = FindViewById<NavigationView>(Resource.Id.nav_view); navigationView.NavigationItemSelected += NavigationView_NavigationItemSelected; // Membuat drawer toolbar var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, Resource.String.open_drawer, Resource.String.close_drawer); drawerLayout.SetDrawerListener(drawerToggle); drawerToggle.SyncState(); //Definisikan nama fragment agar dapat dipanggil pada navigasi homeFragment = new HomeFragment(); writeFragment = new WriteFragment(); mStackFragment = new Stack<SupportFragment>(); //Menambahkan Fragment var trans = SupportFragmentManager.BeginTransaction(); //Menyembungikan fragment pesan agar hanya home yang muncul trans.Add(Resource.Id.HomeFrameLayout, writeFragment, "Pesan"); trans.Hide(writeFragment); //Tampilkan home Fragment trans.Add(Resource.Id.HomeFrameLayout, homeFragment, "Home"); trans.Commit(); mCurrentFragment = homeFragment; } //Definisikan Cutom Title Text protected override void OnResume() { SupportActionBar.SetTitle(Resource.String.app_name); base.OnResume(); } //Definisikan kemana navigasi akan diarahkan void NavigationView_NavigationItemSelected(object sender, NavigationView.NavigationItemSelectedEventArgs e) { switch (e.MenuItem.ItemId) { case (Resource.Id.nav_home): Toast.MakeText(this, "Anda memilih halaman Home!", ToastLength.Short).Show(); ShowFragment(homeFragment); break; case (Resource.Id.nav_messages): Toast.MakeText(this, "Anda memilih halaman Pesan!", ToastLength.Short).Show(); ShowFragment(writeFragment); break; case (Resource.Id.nav_friends): Toast.MakeText(this, "Anda memilih halaman Teman!", ToastLength.Short).Show(); break; } // Close drawer drawerLayout.CloseDrawers(); } //Tambahkan Custom Icon pada toolbar public override bool OnCreateOptionsMenu(Android.Views.IMenu menu) { MenuInflater.Inflate(Resource.Menu.action_menu, menu); if (menu != null) { menu.FindItem(Resource.Id.action_refresh).SetVisible(true); menu.FindItem(Resource.Id.action_attach).SetVisible(false); } return base.OnCreateOptionsMenu(menu); } //Definisikan icon jika di press / click / terseleksi public override bool OnOptionsItemSelected(IMenuItem item) { switch (item.ItemId) { case Android.Resource.Id.Home: //Masukan navigasi return true; case Resource.Id.action_attach: //Masukan navigasi return true; default: return base.OnOptionsItemSelected(item); } } //Fungsi menampilkan fragment private void ShowFragment(SupportFragment fragment) { if (fragment.IsVisible) { return; } var trans = SupportFragmentManager.BeginTransaction(); //trans.SetCustomAnimations(Resource.Animation.Slide_in,Resource.Animation.Slide_out,Resource.Animation.Slide_in, Resource.Animation.Slide_out ) trans.SetCustomAnimations(Resource.Animation.Slide_in, Resource.Animation.Slide_out); trans.Hide(mCurrentFragment); trans.Show(fragment); trans.AddToBackStack(null); trans.Commit(); mStackFragment.Push(mCurrentFragment); mCurrentFragment = fragment; } //Fungsi ketika tombol back di pree public override void OnBackPressed() { if (FragmentManager.BackStackEntryCount != 0) { FragmentManager.PopBackStack();//fragmentManager.popBackStack(); } else { base.OnBackPressed(); } } } }
Pada MainActivity.cs ada beberapa yang harus dipahami antara lain adalah
// Membuat konfigurasi Toolbar var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.app_bar); SetSupportActionBar(toolbar); SupportActionBar.SetTitle(Resource.String.app_name); SupportActionBar.SetDisplayHomeAsUpEnabled(true); SupportActionBar.SetDisplayShowHomeEnabled(true);
Kode diatas adalah untuk konfigurasi toolbar/ action bar kita
// Memasukan item yang terseleksi agar masuk di navigasi var navigationView = FindViewById<NavigationView>(Resource.Id.nav_view); navigationView.NavigationItemSelected += NavigationView_NavigationItemSelected;
Mendefinisikan menu pada navigasi
//Menambahkan Fragment var trans = SupportFragmentManager.BeginTransaction(); //Menyembungikan fragment pesan agar hanya home yang muncul trans.Add(Resource.Id.HomeFrameLayout, writeFragment, "Pesan"); trans.Hide(writeFragment); //Tampilkan home Fragment trans.Add(Resource.Id.HomeFrameLayout, homeFragment, "Home"); trans.Commit(); mCurrentFragment = homeFragment;
Mendaftarkan fragment pada activity , serta menentukan Current Fragment
//Definisikan kemana navigasi akan diarahkan void NavigationView_NavigationItemSelected(object sender, NavigationView.NavigationItemSelectedEventArgs e) { switch (e.MenuItem.ItemId) { case (Resource.Id.nav_home): Toast.MakeText(this, "Anda memilih halaman Home!", ToastLength.Short).Show(); ShowFragment(homeFragment); break; case (Resource.Id.nav_messages): Toast.MakeText(this, "Anda memilih halaman Pesan!", ToastLength.Short).Show(); ShowFragment(writeFragment); break; case (Resource.Id.nav_friends): Toast.MakeText(this, "Anda memilih halaman Teman!", ToastLength.Short).Show(); break; } // Close drawer drawerLayout.CloseDrawers(); }
Code diatas akan mengarahkan ke mana navigasi tersebut apakah ke fragment lain atau activity lain.
//Fungsi menampilkan fragment private void ShowFragment(SupportFragment fragment) { if (fragment.IsVisible) { return; } var trans = SupportFragmentManager.BeginTransaction(); //trans.SetCustomAnimations(Resource.Animation.Slide_in,Resource.Animation.Slide_out,Resource.Animation.Slide_in, Resource.Animation.Slide_out ) trans.SetCustomAnimations(Resource.Animation.Slide_in, Resource.Animation.Slide_out); trans.Hide(mCurrentFragment); trans.Show(fragment); trans.AddToBackStack(null); trans.Commit(); mStackFragment.Push(mCurrentFragment); mCurrentFragment = fragment; }
Fungsi diatas adalah untuk menampilkan fragment
Salam
Ipung Purwono
https://www.facebook.com/ipungz.purwono
No comments:
Post a Comment
Mohon melakukan komentar dengan bahasa yang mudah dipahami, santun dan dengan bahasa yang baik.