protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            //	MenuItem item = menu.findItem(R.id.addAction);
            // Set our view from the "main" layout resource
            this.SetContentView(Resource.Layout.Main);

            mToolbar = FindViewById <SupportToolbar>(Resource.Id.toolbar);

            //mToolbar.FindViewById<IMenuItem>(Resource.Id.action_sa
            mDrawerLayout        = FindViewById <Android.Support.V4.Widget.DrawerLayout>(Resource.Id.drawer_layout);
            mLeftDrawer          = FindViewById <Android.Widget.ListView>(Resource.Id.left_drawer);
            mFragmentContainer   = FindViewById <Android.Widget.FrameLayout>(Resource.Id.fragmentContainer);
            mFragmentListAnimals = new FragmentListAnimals();

            /*mFragmentListScience = new FragmentListScientists();
             * mFragmentAddScience = new FragmentAddScientist();
             * fragmentAddAnimal = new FragmentAddAnimal ();*/

            mStackFragments = new Stack <SupportFragment>();

            var trans = SupportFragmentManager.BeginTransaction();

            /*	trans.Add(Resource.Id.fragmentContainer, mFragmentAddScience, "Fragment3");
             *      trans.Hide(mFragmentAddScience);
             *
             *      trans.Add(Resource.Id.fragmentContainer, mFragmentListScience, "Fragment2");
             *      trans.Hide(mFragmentListScience);
             *      trans.Add(Resource.Id.fragmentContainer, mFragmentSetting, "FragmentSetting");
             *      trans.Hide (mFragmentSetting);
             *
             *
             *      trans.Add (Resource.Id.fragmentContainer, fragmentAddAnimal, "FragmentAnimal");*/
            mFragmentListScience = new FragmentListScientists();

            trans.Add(Resource.Id.fragmentContainer, mFragmentListAnimals, "FragmentListAnimals");
            trans.Commit();

            mCurrentFragment = mFragmentListAnimals;

            mLeftDrawer.Tag = 0;

            SetSupportActionBar(mToolbar);

            mLeftDataSet = new List <string>();
            mLeftDataSet.Add("Animals");
            mLeftDataSet.Add("Scientists");
            mLeftAdapter        = new Android.Widget.ArrayAdapter <string>(this, Android.Resource.Layout.SimpleListItem1, mLeftDataSet);
            mLeftDrawer.Adapter = mLeftAdapter;


            mDrawerToggle = new MyActionBarDrawerToggle(
                this,                                                           //Host Activity
                mDrawerLayout                                                   //DrawerLayout
                );

            mDrawerLayout.SetDrawerListener(mDrawerToggle);
            SupportActionBar.SetHomeButtonEnabled(true);
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            SupportActionBar.SetDisplayShowTitleEnabled(true);
            mDrawerToggle.SyncState();

            //This is the first the time the activity is ran
            SupportActionBar.SetTitle(Resource.String.animals);

            mLeftDrawer.ItemClick += MLeftDrawer_ItemClick;

            InitBackgroundLocationManager();

            bundle = Intent.Extras;
            if (bundle != null)
            {
                var id = bundle.GetInt("id");
                if (id != null && id != 0)
                {
                    ShowFragment(ViewEnumeration.VIEW_DETAIL_ANIMAL, DataManager.Instance.GetAnimal(id));
                }
            }
        }
        public void ShowFragment(ViewEnumeration f, Java.Lang.Object extraData = null)
        {
            var trans = SupportFragmentManager.BeginTransaction();

            trans.SetCustomAnimations(Resource.Animation.slide_in, Resource.Animation.slide_out, Resource.Animation.slide_in, Resource.Animation.slide_out);
            SupportFragment fragment = null;

            switch (f)
            {
            case ViewEnumeration.VIEW_ANIMAL:
                if (mCurrentFragment is FragmentListAnimals)
                {
                    return;
                }
                else if (mCurrentFragment is FragmentAddAnimal)
                {
                    trans.Remove(fragmentAddAnimal);
                }
                else if (mCurrentFragment is FragmentListScientists)
                {
                    trans.Remove(mFragmentListScience);
                }
                else if (mCurrentFragment is FragmentAddScientist)
                {
                    trans.Remove(mFragmentAddScience);
                }
                else
                {
                    trans.Remove(mFragmentSetting);
                }
                mFragmentListAnimals = new FragmentListAnimals();
                trans.Add(Resource.Id.fragmentContainer, mFragmentListAnimals, "FragmentListAnimals");

                fragment = mFragmentListAnimals;
                EnableButtonSave(false);
                mFragmentListAnimals.RecalculateList();
                break;

            case ViewEnumeration.VIEW_DETAIL_ANIMAL:
                EnableButtonSave(true);
                fragmentAddAnimal = new FragmentAddAnimal();
                trans.Add(Resource.Id.fragmentContainer, fragmentAddAnimal, "FragmentAnimal");
                fragment = fragmentAddAnimal;
                trans.Remove(mFragmentListAnimals);
                if (extraData != null)
                {
                    fragmentAddAnimal.SetAnimal((AnimalAndroid)extraData);
                }
                break;

            case ViewEnumeration.VIEW_DETAIL_SCIENTIST:
                EnableButtonSave(true);
                mFragmentAddScience = new FragmentAddScientist();
                fragment            = mFragmentAddScience;
                trans.Remove(mFragmentListScience);
                trans.Add(Resource.Id.fragmentContainer, mFragmentAddScience, "FragmentAddScientist");
                mFragmentAddScience.ResetFields();
                if (extraData != null)
                {
                    mFragmentAddScience.scientist = ((ScientistAndroid)extraData);
                }
                break;

            case ViewEnumeration.VIEW_SCIENTIST:
                EnableButtonSave(false);
                if (mCurrentFragment is FragmentListScientists)
                {
                    return;
                }
                else if (mCurrentFragment is FragmentAddAnimal)
                {
                    trans.Remove(fragmentAddAnimal);
                }
                else if (mCurrentFragment is FragmentListAnimals)
                {
                    trans.Remove(mFragmentListAnimals);
                }
                else if (mCurrentFragment is FragmentAddScientist)
                {
                    trans.Remove(mFragmentAddScience);
                }
                else
                {
                    trans.Remove(mFragmentSetting);
                }
                trans.Add(Resource.Id.fragmentContainer, mFragmentListScience, "FragmentListScientist");
                fragment = mFragmentListScience;
                //	fragment.OnCreateView (this.LayoutInflater, this.LayoutInflater, null);
                mFragmentListScience.RecalculateList();
                break;

            case ViewEnumeration.VIEW_SETTINGS:
                if (mCurrentFragment is FragmentSettings)
                {
                    return;
                }
                else if (mCurrentFragment is FragmentAddAnimal)
                {
                    trans.Remove(fragmentAddAnimal);
                }
                else if (mCurrentFragment is FragmentListAnimals)
                {
                    trans.Remove(mFragmentListAnimals);
                }
                else if (mCurrentFragment is FragmentAddScientist)
                {
                    trans.Remove(mFragmentAddScience);
                }
                else
                {
                    trans.Remove(mFragmentListScience);
                }
                mFragmentSetting = new FragmentSettings();
                trans.Add(Resource.Id.fragmentContainer, mFragmentSetting, "FragmentListScientist");
                EnableButtonSave(false);
                SupportActionBar.SetTitle(Resource.String.settings);
                fragment = mFragmentSetting;
                break;
            }

            if (fragment != null)
            {
                if (fragment.View != null)
                {
                    fragment.View.BringToFront();
                }
            }
            if (mCurrentFragment.View != null)
            {
                mCurrentFragment.View.BringToFront();
            }

            trans.Hide(mCurrentFragment);
            trans.Show(fragment);
            trans.AddToBackStack(null);
            mStackFragments.Push(mCurrentFragment);
            //trans.Remove (mCurrentFragment);
            trans.Commit();
            FragmentManager.ExecutePendingTransactions();
            //mFragmentManager.executePendingTransactions();

            mCurrentFragment = fragment;
        }