Example #1
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            // 去标题栏
            RequestWindowFeature(WindowFeatures.NoTitle);
            SetContentView(Resource.Layout.activity_main);
            mSlidingMenu = FindViewById<SlidingMenu>(Resource.Id.slidingMenu);
            mSlidingMenu.SetLeftView(LayoutInflater.Inflate(Resource.Layout.left_frame, null));
            mSlidingMenu.SetRightView(LayoutInflater.Inflate(Resource.Layout.right_frame, null));
            mSlidingMenu.SetCenterView(LayoutInflater.Inflate(Resource.Layout.center_frame, null));

            ft = this.SupportFragmentManager.BeginTransaction();
            leftFragment = new LeftFragment();
            rightFragment = new RightFragment();
            ft.Replace(Resource.Id.left_frame, leftFragment);
            ft.Replace(Resource.Id.right_frame, rightFragment);

            centerFragment = new SampleListFragment();
            ft.Replace(Resource.Id.center_frame, centerFragment);
            ft.Commit();
        }
        protected override void AddChildView(VisualElement childView)
        {
            _pageContainer = null;

            Page page = childView as NavigationPage ?? (Page)(childView as TabbedPage);

            if (page == null)
            {
                // The thing we're adding is not a NavigationPage or TabbedPage, so we can just use the old AddChildView

                if (_currentFragment != null)
                {
                    // But first, if the previous occupant of this container was a fragment, we need to remove it properly
                    FragmentTransaction transaction = FragmentManager.BeginTransaction();
                    transaction.DisallowAddToBackStack();
                    transaction.Remove(_currentFragment);
                    transaction.SetTransition((int)FragmentTransit.None);

                    // This is a removal of a fragment that's not going on the back stack; there's no reason to care
                    // whether its state gets successfully saved, since we'll never restore it. Ergo, CommitAllowingStateLoss
                    transaction.CommitAllowingStateLoss();

                    _currentFragment = null;
                }

                base.AddChildView(childView);
            }
            else
            {
                // The renderers for NavigationPage and TabbedPage both host fragments, so they need to be wrapped in a
                // FragmentContainer in order to get isolated fragment management
                Fragment fragment = FragmentContainer.CreateInstance(page);

                var fc = fragment as FragmentContainer;

                fc?.SetOnCreateCallback(pc =>
                {
                    _pageContainer = pc;
                    SetDefaultBackgroundColor(pc.Child);
                });

                FragmentTransaction transaction = FragmentManager.BeginTransaction();
                transaction.DisallowAddToBackStack();

                if (_currentFragment != null)
                {
                    transaction.Remove(_currentFragment);
                }

                transaction.Add(Id, fragment);
                transaction.SetTransition((int)FragmentTransit.None);

                // We don't currently support fragment restoration
                // So we don't need to worry about loss of this fragment's state
                transaction.CommitAllowingStateLoss();

                _currentFragment = fragment;

                new Handler(Looper.MainLooper).PostAtFrontOfQueue(() => FragmentManager.ExecutePendingTransactions());
            }
        }
        protected override void Dispose(bool disposing)
        {
            if (disposing && !_disposed)
            {
                _disposed = true;

                if (_titleViewRenderer != null)
                {
                    Android.Platform.ClearRenderer(_titleViewRenderer.View);
                    _titleViewRenderer.Dispose();
                    _titleViewRenderer = null;
                }

                _toolbar.RemoveView(_titleView);
                _titleView?.Dispose();
                _titleView = null;

                _toolbar.RemoveView(_titleIconView);
                _titleIconView?.Dispose();
                _titleIconView = null;

                _imageSource = null;

                if (_toolbarTracker != null)
                {
                    _toolbarTracker.CollectionChanged -= ToolbarTrackerOnCollectionChanged;
                    _toolbarTracker.Target             = null;
                    _toolbarTracker = null;
                }

                if (_toolbar != null)
                {
                    _toolbar.SetNavigationOnClickListener(null);
                    _toolbar.Dispose();
                    _toolbar = null;
                }

                if (_drawerLayout != null && _drawerListener != null)
                {
                    _drawerLayout.RemoveDrawerListener(_drawerListener);
                }

                if (_drawerListener != null)
                {
                    _drawerListener.Dispose();
                    _drawerListener = null;
                }

                if (_drawerToggle != null)
                {
                    _drawerToggle.Dispose();
                    _drawerToggle = null;
                }

                if (_backgroundDrawable != null)
                {
                    _backgroundDrawable.Dispose();
                    _backgroundDrawable = null;
                }

                Current = null;

                // We dispose the child renderers after cleaning up everything related to DrawerLayout in case
                // one of the children is a MasterDetailPage (which may dispose of the DrawerLayout).
                if (Element != null)
                {
                    foreach (Element element in PageController.InternalChildren)
                    {
                        var child = element as VisualElement;
                        if (child == null)
                        {
                            continue;
                        }

                        IVisualElementRenderer renderer = Android.Platform.GetRenderer(child);
                        renderer?.Dispose();
                    }

                    var navController = NavigationPageController;

                    navController.PushRequested             -= OnPushed;
                    navController.PopRequested              -= OnPopped;
                    navController.PopToRootRequested        -= OnPoppedToRoot;
                    navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested;
                    navController.RemovePageRequested       -= OnRemovePageRequested;
                }

                Device.Info.PropertyChanged -= DeviceInfoPropertyChanged;

                // API only exists on newer android YAY
                if ((int)Build.VERSION.SdkInt >= 17)
                {
                    FragmentManager fm = FragmentManager;

                    if (!fm.IsDestroyed)
                    {
                        FragmentTransaction trans = fm.BeginTransactionEx();
                        foreach (Fragment fragment in _fragmentStack)
                        {
                            trans.RemoveEx(fragment);
                        }
                        trans.CommitAllowingStateLossEx();
                        fm.ExecutePendingTransactionsEx();
                    }
                }
            }

            base.Dispose(disposing);
        }
Example #4
0
            private void SetContent(ActionBar.Tab tab, FragmentTransaction ft, int?placeHolder, Activity activity, ActionBar bar)
            {
                if (placeHolder == null)
                {
                    Tracer.Error("The placeholder for tab {0} was not found.", tab);
                    return;
                }
                var layout = activity.FindViewById <ViewGroup>(placeHolder.Value);

                if (layout == null)
                {
                    Tracer.Warn("The ActionBarTabContentId with id = {0} is not found in activity {1}",
                                placeHolder.Value,
                                activity);
                    return;
                }
                if (_content == null)
                {
#if APPCOMPAT
                    _content = tab.GetBindingMemberValue(AttachedMembersCompat.ActionBarTab.Content);
#else
                    _content = tab.GetBindingMemberValue(AttachedMembers.ActionBarTab.Content);
#endif

                    var viewModel = _content as IViewModel;
                    if (viewModel == null)
                    {
                        var fragmentClass = _content as string;
                        //If content is a string, trying to create a fragment.
                        if (!string.IsNullOrEmpty(fragmentClass))
                        {
                            var type = TypeCache <Fragment> .Instance.GetTypeByName(fragmentClass, true, false);

                            if (type != null)
                            {
                                var fragment = Fragment.Instantiate(bar.ThemedContext, Java.Lang.Class.FromType(type).Name);
                                _content = fragment;
                            }
                        }
                        else if (_content is int)
                        {
                            _content = activity.GetBindableLayoutInflater().Inflate((int)_content, null);
                        }
                    }
                    else
                    {
                        viewModel.Settings.Metadata.AddOrUpdate(ViewModelConstants.StateNotNeeded, true);
                    }
                    _content = PlatformExtensions.GetContentView(layout, layout.Context, _content,
                                                                 _contentTemplateProvider.GetTemplateId(), _contentTemplateProvider.GetDataTemplateSelector());
                    if (BindingServiceProvider.BindingManager.GetBindings(tab, AttachedMembers.Object.DataContext).Any())
                    {
                        _content.SetBindingMemberValue(AttachedMembers.Object.Parent, tab);
                    }
                    layout.SetContentView(_content, ft, (@group, fragment, arg3) =>
                    {
                        if (fragment.IsDetached)
                        {
                            arg3.Attach(fragment);
                        }
                        else
                        {
                            arg3.Replace(@group.Id, fragment);
                        }
                    });
                }
                else
                {
                    layout.SetContentView(_content, ft, (@group, fragment, arg3) => arg3.Attach(fragment));
                }
            }
        Task <bool> SwitchContentAsync(Page page, bool animated, bool removed = false, bool popToRoot = false)
        {
            var      tcs      = new TaskCompletionSource <bool>();
            Fragment fragment = GetFragment(page, removed, popToRoot);

#if DEBUG
            // Enables logging of moveToState operations to logcat
            FragmentManager.EnableDebugLogging(true);
#endif

            Current = page;

            ((Platform)Element.Platform).NavAnimationInProgress = true;
            FragmentTransaction transaction = FragmentManager.BeginTransaction();

            if (animated)
            {
                SetupPageTransition(transaction, !removed);
            }

            transaction.DisallowAddToBackStack();

            if (_fragmentStack.Count == 0)
            {
                transaction.Add(Id, fragment);
                _fragmentStack.Add(fragment);
            }
            else
            {
                if (removed)
                {
                    // pop only one page, or pop everything to the root
                    var popPage = true;
                    while (_fragmentStack.Count > 1 && popPage)
                    {
                        Fragment currentToRemove = _fragmentStack.Last();
                        _fragmentStack.RemoveAt(_fragmentStack.Count - 1);
                        transaction.Remove(currentToRemove);
                        popPage = popToRoot;
                    }

                    Fragment toShow = _fragmentStack.Last();
                    // Execute pending transactions so that we can be sure the fragment list is accurate.
                    FragmentManager.ExecutePendingTransactions();
                    if (FragmentManager.Fragments.Contains(toShow))
                    {
                        transaction.Show(toShow);
                    }
                    else
                    {
                        transaction.Add(Id, toShow);
                    }
                }
                else
                {
                    // push
                    Fragment currentToHide = _fragmentStack.Last();
                    transaction.Hide(currentToHide);
                    transaction.Add(Id, fragment);
                    _fragmentStack.Add(fragment);
                }
            }

            // We don't currently support fragment restoration, so we don't need to worry about
            // whether the commit loses state
            transaction.CommitAllowingStateLoss();

            // The fragment transitions don't really SUPPORT telling you when they end
            // There are some hacks you can do, but they actually are worse than just doing this:

            if (animated)
            {
                if (!removed)
                {
                    UpdateToolbar();
                    if (_drawerToggle != null && ((INavigationPageController)Element).StackDepth == 2)
                    {
                        AnimateArrowIn();
                    }
                }
                else if (_drawerToggle != null && ((INavigationPageController)Element).StackDepth == 2)
                {
                    AnimateArrowOut();
                }

                Device.StartTimer(TimeSpan.FromMilliseconds(TransitionDuration), () =>
                {
                    tcs.TrySetResult(true);
                    fragment.UserVisibleHint = true;
                    if (removed)
                    {
                        UpdateToolbar();
                    }

                    return(false);
                });
            }
            else
            {
                Device.StartTimer(TimeSpan.FromMilliseconds(1), () =>
                {
                    tcs.TrySetResult(true);
                    fragment.UserVisibleHint = true;
                    UpdateToolbar();

                    return(false);
                });
            }

            Context.HideKeyboard(this);
            ((Platform)Element.Platform).NavAnimationInProgress = false;

            // TransitionDuration is how long the built-in animations are, and they are "reversible" in the sense that starting another one slightly before it's done is fine

            return(tcs.Task);
        }
Example #6
0
        private async void ConfirmBtn_Click(object sender, EventArgs e)
        {
            progressBar.Visibility = ViewStates.Visible;
            string dbPath_attributes = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "attributes.db3");
            var    db_attributes     = new SQLiteConnection(dbPath_attributes);

            MyAttributes myAttributes = db_attributes.Get <MyAttributes>(1);

            myAttributes.cfid = Convert.ToInt32(myCFID);
            db_attributes.Update(myAttributes);

            var firebase  = new FirebaseClient(FirebaseURL);
            var allLogins = await firebase.Child("users").OnceAsync <User>();

            string key = "";

            foreach (var login in allLogins)
            {
                if (login.Object.email == myAttributes.email)
                {
                    key = login.Key;
                }
            }

            User updateUser = new User();

            updateUser.uid      = myAttributes.loginid.ToString();
            updateUser.name     = myAttributes.name;
            updateUser.email    = myAttributes.email;
            updateUser.password = myAttributes.password;
            updateUser.type     = myAttributes.type;
            updateUser.cfid     = myAttributes.cfid.ToString();
            await firebase.Child("users").Child(key).PutAsync(updateUser);

            if (myAttributes.type == "Student")
            {
                string favorites_fileName = "fav_" + myCFID + "_" + myAttributes.loginid.ToString();

                var allCompanies = await firebase.Child(myAttributes.cfid.ToString()).OnceAsync <Company>();

                int numCompanies = allCompanies.Count();
                foreach (var company in allCompanies)
                {
                    Favorite item = new Favorite();
                    item.companyid  = company.Object.companyid;
                    item.name       = company.Object.name;
                    item.isFavorite = false;
                    await firebase.Child(favorites_fileName).PostAsync(item);
                }

                Android.Support.V4.App.FragmentTransaction trans = FragmentManager.BeginTransaction();
                trans.Replace(Resource.Id.register_root_frame, new RegisterFragment());
                trans.Commit();

                viewPager.SetCurrentItem(0, true);
            }

            else if (myAttributes.type == "Recruiter")
            {
                string mPreferences_fileName = "mp_" + myCFID + "_" + myAttributes.attribute1;

                /*string dbPath_mPreferences = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), mPreferences_fileName);
                 * var db_mPreferences = new SQLiteConnection(dbPath_mPreferences);
                 * db_mPreferences.CreateTable<OnQAndroid.SQLite_Tables.MajorPreferences>();
                 * db_mPreferences.CreateTable<OnQAndroid.SQLite_Tables.GradTermPreferences>();
                 * db_mPreferences.CreateTable<OnQAndroid.SQLite_Tables.GPAPreferences>();*/

                string myCompanyQFilename = "qs_" + myCFID + "_" + myAttributes.attribute1;

                /*string dbPath_myCompanyQ = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), myCompanyQFilename);
                 * var db_myCompanyQ = new SQLiteConnection(dbPath_myCompanyQ);
                 * db_myCompanyQ.CreateTable<OnQAndroid.SQLite_Tables.Queue>();*/

                string myCompanyPastQsFilename = "pastqs_" + myAttributes.attribute1;

                /*string dbPath_pastqs = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), myCompanyPastQsFilename);
                 * var db_pastqs = new SQLiteConnection(dbPath_pastqs);
                 * db_pastqs.CreateTable<OnQAndroid.SQLite_Tables.PastQueue>();*/

                Android.Support.V4.App.FragmentTransaction trans = FragmentManager.BeginTransaction();
                trans.Replace(Resource.Id.register_root_frame, new RegisterFragment());
                trans.Commit();

                viewPager.SetCurrentItem(0, true);
            }
            progressBar.Visibility = ViewStates.Invisible;
        }
 public static int CommitAllowingStateLossEx(this FragmentTransaction fragmentTransaction)
 {
     return(fragmentTransaction.CommitAllowingStateLoss());
 }
 public void OnTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
 {
 }
 public static FragmentTransaction ShowEx(this FragmentTransaction fragmentTransaction, Fragment fragment)
 {
     return(fragmentTransaction.Show(fragment));
 }
 public static FragmentTransaction SetTransitionEx(this FragmentTransaction fragmentTransaction, int transit)
 {
     return(fragmentTransaction.SetTransition(transit));
 }
 public static FragmentTransaction HideEx(this FragmentTransaction fragmentTransaction, Fragment fragment)
 {
     return(fragmentTransaction.Hide(fragment));
 }
 public static FragmentTransaction AddEx(this FragmentTransaction fragmentTransaction, int containerViewId, Fragment fragment)
 {
     return(fragmentTransaction.Add(containerViewId, fragment));
 }
Example #13
0
        void SwicthFragment(int id)
        {
            FragmentTransaction ft = fragmentManager.BeginTransaction();

            HideAllFragment(ft);
            switch (id)
            {
            case Resource.Id.navigation_home:
                if (indexFragment == null)
                {
                    indexFragment = new IndexFragment();
                    ft.Add(Resource.Id.flyout_, indexFragment);
                }
                else
                {
                    ft.Show(indexFragment);
                }
                SetToolbarTitle(Resources.GetString(Resource.String.toolbar_title_index));
                break;

            case Resource.Id.navigation_dashboard:
                if (newsFragment == null)
                {
                    newsFragment = new NewsFragment();
                    ft.Add(Resource.Id.flyout_, newsFragment);
                }
                else
                {
                    ft.Show(newsFragment);
                }
                SetToolbarTitle(Resources.GetString(Resource.String.toolbar_title_news));
                break;

            case Resource.Id.navigation_notifications:
                if (TalkFragment == null)
                {
                    TalkFragment = new TalkFragment();
                    ft.Add(Resource.Id.flyout_, TalkFragment);
                }
                else
                {
                    ft.Show(TalkFragment);
                }
                SetToolbarTitle(Resources.GetString(Resource.String.toolbar_title_question));
                break;

            case Resource.Id.navigation_question:
                if (questionFragment == null)
                {
                    questionFragment = new QuestionFragment(false);
                    ft.Add(Resource.Id.flyout_, questionFragment);
                }
                else
                {
                    ft.Show(questionFragment);
                }
                SetToolbarTitle(Resources.GetString(Resource.String.title_question));
                break;

            case Resource.Id.navigation_mine:
                if (mineFragment == null)
                {
                    mineFragment = new MineFragment();
                    ft.Add(Resource.Id.flyout_, mineFragment);
                }
                else
                {
                    ft.Show(mineFragment);
                }
                break;
            }
            ft.Commit();
        }
Example #14
0
		public void OnTabSelected (SherlockActionBar.Tab tab, FragmentTransaction transaction)
		{
			Pager.SetCurrentItem (tab.Position, true);
		}
 public static FragmentTransaction RemoveEx(this FragmentTransaction fragmentTransaction, Fragment fragment)
 {
     return(fragmentTransaction.Remove(fragment));
 }
		public void OnTabSelected (SherlockActionBar.Tab tab, FragmentTransaction transaction)
		{
			mSelected.Text = "Selected: " + tab.Text;
		}
Example #17
0
 public void OnTabSelected(SherlockActionBar.Tab tab, FragmentTransaction transaction)
 {
     mSelected.Text = "Selected: " + tab.Text;
 }
 public void OnTabUnselected(ActionBar.Tab tab, FragmentTransaction ft)
 {
     if (_cleared)
         return;
     var fragment = _content as Fragment;
     if (fragment != null)
     {
         ft.Detach(fragment);
         return;
     }
     var view = _content as View;
     if (view == null)
         return;
     var viewGroup = view.Parent as ViewGroup;
     if (viewGroup != null)
         viewGroup.RemoveView(view);
 }
Example #19
0
 public void OnTabUnselected(SherlockActionBar.Tab tab, FragmentTransaction transaction)
 {
 }
 public override void FinishUpdate(ViewGroup container)
 {
     if (_currentTransaction == null)
         return;
     _currentTransaction.CommitAllowingStateLoss();
     _currentTransaction = null;
     _fragmentManager.ExecutePendingTransactions();
 }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);



            string parameterValue = this.Intent.GetStringExtra("message");

            if (!string.IsNullOrEmpty(parameterValue))
            {
            }

            #region Re-defining Variables

            _supporttoolbar = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.ToolBar);
            _supporttoolbar.SetTitle(Resource.String.boletin);
            SetSupportActionBar(_supporttoolbar);
            SupportActionBar.SetDisplayHomeAsUpEnabled(false);
            _supporttoolbar.Visibility = ViewStates.Gone;

//			_drawer = FindViewById<DrawerLayout>(Resource.Id.DrawerLayout);
//
//			_navigationview = FindViewById<NavigationView>(Resource.Id.nav_view);

//			Button btnBoletin = FindViewById<Button>(Resource.Id.btnBoletin);
//			Button btnAsesoria = FindViewById<Button>(Resource.Id.btnAsesoria);
//			Button btnSeguimiento = FindViewById<Button>(Resource.Id.btnSeguimiento);

            news            = new NewsFragment();
            tips            = new TipsFragment();
            ticket          = new TicketFragment();
            ticketJuridico  = new TicketJuridicoFragment();
            seguimiento     = new SeguimientoFragment();
            mStackFragments = new Stack <SupportFragment>();

            #endregion

            Android.Support.V4.App.FragmentTransaction tx = SupportFragmentManager.BeginTransaction();

            tx.Add(Resource.Id.layout_content, news);
            tx.Add(Resource.Id.layout_content, tips);
            tx.Add(Resource.Id.layout_content, ticket);
            tx.Add(Resource.Id.layout_content, ticketJuridico);
            tx.Add(Resource.Id.layout_content, seguimiento);
            tx.Hide(news);
            tx.Hide(ticket);
            tx.Hide(ticketJuridico);
            tx.Hide(seguimiento);

            mCurrentFragment = tips;
            tx.Commit();


            _supporttoolbar.Click += (object sender, EventArgs e) =>
            {
                StartActivity(typeof(MainActivity));
            };

            #region CommentCode
//			btnBoletin.Click += (object sender, EventArgs e) =>
//			{
//				Android.Support.V4.App.Fragment fragment = null;
//				_supporttoolbar.SetTitle(Resource.String.boletin);
//				fragment = new NewsFragment ();
//				SupportFragmentManager.BeginTransaction ().Replace (Resource.Id.layout_contentMain, fragment).Commit ();
//			};
//
//			btnAsesoria.Click += (object sender, EventArgs e) =>
//			{
//				Android.Support.V4.App.Fragment fragment = null;
//				_supporttoolbar.SetTitle(Resource.String.QuejasDenuncias);
//				fragment = new TicketFragment ();
//				SupportFragmentManager.BeginTransaction ().Replace (Resource.Id.layout_contentMain, fragment).Commit ();
//			};
//
//			btnSeguimiento.Click += (object sender, EventArgs e) =>
//			{
//				Android.Support.V4.App.Fragment fragment = null;
//				_supporttoolbar.SetTitle(Resource.String.Seguimiento);
//				fragment = new SeguimientoFragment ();
//				SupportFragmentManager.BeginTransaction ().Replace (Resource.Id.layout_contentMain, fragment).Commit ();
//			};

//			_navigationview.NavigationItemSelected += (sender, e) => {
//				Android.Support.V4.App.Fragment fragment = null;
//				switch (e.MenuItem.ItemId) {
//				case Resource.Id.nav_news:
//					_supporttoolbar.SetTitle(Resource.String.boletin);
//					fragment = new NewsFragment ();
//					break;
//				case Resource.Id.nav_monedero:
//					_supporttoolbar.SetTitle(Resource.String.monedero);
//					fragment = new TipsFragment ();
//					break;
//				case Resource.Id.nav_ticket:
//					_supporttoolbar.SetTitle(Resource.String.QuejasDenuncias);
//					fragment = new TicketFragment ();
//					break;
//				case Resource.Id.nav_ticket_juridico:
//					_supporttoolbar.SetTitle(Resource.String.Apoyo_Juridico);
//					fragment = new TicketJuridicoFragment ();
//					break;
//				case Resource.Id.nav_seguimiento:
//					_supporttoolbar.SetTitle(Resource.String.Seguimiento);
//					fragment = new SeguimientoFragment ();
//					break;
//				}
//
//
//
//				SupportFragmentManager.BeginTransaction ().Replace (Resource.Id.layout_content, fragment).Commit ();
//				_drawer.CloseDrawers ();
//
//			};
            #endregion
        }
Example #22
0
 public void OnTabUnselected(SupportActionBar.Tab tab, SupportFragmentTransaction fragmentTransaction)
 {
     this.TabListener.OnTabUnselected(this.Tab, null);
 }
Example #23
0
        public bool SetContent(object view, object content)
        {
            var targetView = view as ViewGroup;

            if (targetView == null)
            {
                return(false);
            }
            if (content == null)
            {
                FragmentManager fragmentManager = targetView.GetFragmentManager();
                if (fragmentManager != null)
                {
                    Fragment oldFragment = fragmentManager.FindFragmentById(targetView.Id);
                    if (oldFragment != null && !fragmentManager.IsDestroyed)
                    {
                        BeginTransaction(fragmentManager, targetView, null)
                        .Remove(oldFragment)
                        .CommitAllowingStateLoss();
                        fragmentManager.ExecutePendingTransactions();
                        return(true);
                    }
                }
                return(false);
            }
            var fragment = content as Fragment;

            if (fragment == null)
            {
                return(false);
            }
            PlatformExtensions.ValidateViewIdFragment(targetView, fragment);
            FragmentManager manager = targetView.GetFragmentManager();

            if (manager == null)
            {
                return(false);
            }
            FragmentTransaction transaction = BeginTransaction(manager, targetView, fragment);
            var addToBackStack = targetView.GetBindingMemberValue(AttachedMembers.ViewGroup.AddToBackStack);

            if (addToBackStack && fragment.Arguments != null)
            {
                addToBackStack = !fragment.Arguments.GetBoolean(AddedToBackStackKey);
            }

            if (fragment.IsDetached)
            {
                transaction.Attach(fragment);
            }
            else
            {
                if (addToBackStack)
                {
                    if (fragment.Arguments == null)
                    {
                        fragment.Arguments = new Bundle();
                    }
                    fragment.Arguments.PutBoolean(AddedToBackStackKey, true);
                }
                transaction.Replace(targetView.Id, fragment);
            }
            if (addToBackStack)
            {
                transaction.AddToBackStack(null);
            }

            transaction.Commit();
            manager.ExecutePendingTransactions();
            return(true);
        }
Example #24
0
 public void OnTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
 {
 }
        private void MapFarmToUserCall(ProgressDialog dialog, Activity curActivity)
        {
            try
            {
                farmId = arrFields.Where(x => x.FarmName == spinnerx0txt).Select(f => f.FarmId).FirstOrDefault();

                string mStringLoginInfo    = string.Empty;
                string mStringSessionToken = string.Empty;
                try
                {
                    objdb = new DBaseOperations();
                    var lstu = objdb.selectTable();
                    if (lstu != null && lstu.Count > default(int))
                    {
                        var uobj = lstu.FirstOrDefault();
                        if (uobj.Password == " ")
                        {
                            throw new Exception("Please login again");
                        }
                        mStringLoginInfo    = uobj.EmailId;
                        mStringSessionToken = uobj.AuthToken;
                    }
                }
                catch { }

                var client  = new RestClient(Common.UrlBase);
                var request = new RestRequest("Farm/MapFarmByUserDetail", Method.POST);
                request.AddHeader("Content-Type", "application/json");
                request.AddHeader("TokenKey", mStringSessionToken);
                request.AddQueryParameter("FarmId", farmId);
                IRestResponse response    = client.Execute(request);
                var           content     = response.Content;
                var           responseObj = Newtonsoft.Json.JsonConvert.DeserializeObject <FarmDetailResponse>(content);
                if (responseObj.Status == ResponseStatus.Successful)
                {
                    MyFarmDashboardFragment objFragment           = new MyFarmDashboardFragment();
                    Android.Support.V4.App.FragmentTransaction tx = FragmentManager.BeginTransaction();
                    tx.Replace(Resource.Id.m_main, objFragment, Constants.myfarmdash);
                    tx.Commit();
                }
                else
                {
                    throw new Exception(responseObj.Error);
                }
            }
            catch (Exception ex)
            {
                curActivity.RunOnUiThread(() =>
                {
                    Android.App.AlertDialog.Builder alertDiag = new Android.App.AlertDialog.Builder(curActivity);
                    alertDiag.SetTitle(Resource.String.DialogHeaderError);
                    alertDiag.SetMessage(ex.Message);
                    alertDiag.SetIcon(Resource.Drawable.alert);
                    alertDiag.SetPositiveButton(Resource.String.DialogButtonOk, (senderAlert, args) =>
                    {
                    });
                    Dialog diag = alertDiag.Create();
                    diag.Show();
                    diag.SetCanceledOnTouchOutside(false);
                });
            }
            finally
            {
                if (dialog != null && dialog.IsShowing)
                {
                    dialog.Hide();
                    dialog.Dismiss();
                }
            }
        }
Example #26
0
 private void BackButton_Click(object sender, EventArgs e)
 {
     Android.Support.V4.App.FragmentTransaction trans = FragmentManager.BeginTransaction();
     trans.Replace(Resource.Id.register_root_frame, new RegisterFragment());
     trans.Commit();
 }
Example #27
0
        private Task <bool> SwitchContentAsync(Page page, bool animated, bool removed = false, bool popToRoot = false)
        {
            var             tcs             = new TaskCompletionSource <bool>();
            Fragment        fragment        = _hepler.GetFragment(page, removed, popToRoot);
            List <Fragment> fragments       = _hepler.FragmentStack;
            FragmentManager fm              = _hepler.FragmentManager;
            var             currentPade     = (removed ? _hepler.CurrentPage : page);
            var             currentAnimPade = currentPade as IAnimationPage;
            var             animation       = AnimationNavigationPage.GetAnimation(currentPade, animated);

            _hepler.CurrentPage = page;
            _hepler.SetNavAnimationInProgress(Element, true);
            FragmentTransaction transaction = fm.BeginTransaction();

            AnimationHelper.SetupTransition(transaction, animation, !removed, animated);
            if (animation.Type != AnimationType.Empty && animation.Duration != AnimationDuration.Zero)
            {
                currentAnimPade?.OnAnimationStarted(removed);
            }
            transaction.DisallowAddToBackStack();
            if (fragments.Count == 0)
            {
                transaction.Add(Id, fragment);
                fragments.Add(fragment);
            }
            else
            {
                if (removed)
                {
                    // pop only one page, or pop everything to the root
                    var popPage           = true;
                    var fragmentsToRemove = new List <Fragment>();
                    while (fragments.Count > 1 && popPage)
                    {
                        var currentToRemove = fragments.Last();
                        fragments.RemoveAt(fragments.Count - 1);
                        fragmentsToRemove.Add(currentToRemove);
                        transaction.Hide(currentToRemove);
                        popPage = popToRoot;
                    }
                    // we need it for poping pages with animation
                    RemoveFragments(fragmentsToRemove);
                    Fragment toShow = fragments.Last();
                    // Execute pending transactions so that we can be sure the fragment list is accurate.
                    fm.ExecutePendingTransactions();
                    if (fm.Fragments.Contains(toShow))
                    {
                        transaction.Show(toShow);
                    }
                    else
                    {
                        transaction.Add(Id, toShow);
                    }
                }
                else
                {
                    // push
                    Fragment currentToHide = fragments.Last();
                    transaction.Hide(currentToHide);
                    transaction.Add(Id, fragment);
                    fragments.Add(fragment);
                }
            }
            // We don't currently support fragment restoration, so we don't need to worry about
            // whether the commit loses state
            transaction.CommitAllowingStateLoss();

            // The fragment transitions don't really SUPPORT telling you when they end
            // There are some hacks you can do, but they actually are worse than just doing this:
            if (animated)
            {
                if (!removed)
                {
                    _hepler.UpdateToolbar();
                    if (_hepler.DrawerToggle != null && ((INavigationPageController)Element).StackDepth == 2)
                    {
                        _hepler.AnimateArrowIn();
                    }
                }
                else if (_hepler.DrawerToggle != null && ((INavigationPageController)Element).StackDepth == 2)
                {
                    _hepler.AnimateArrowOut();
                }
                Device.StartTimer(TimeSpan.FromMilliseconds(TransitionDuration), () =>
                {
                    tcs.TrySetResult(true);
                    fragment.UserVisibleHint = true;
                    if (removed)
                    {
                        _hepler.UpdateToolbar();
                    }
                    return(false);
                });
            }
            else
            {
                Device.StartTimer(TimeSpan.FromMilliseconds(1), () =>
                {
                    tcs.TrySetResult(true);
                    fragment.UserVisibleHint = true;
                    _hepler.UpdateToolbar();
                    return(false);
                });
            }
            Context.HideKeyboard(this);

            if (animation.Type != AnimationType.Empty && animation.Duration != AnimationDuration.Zero && currentAnimPade != null)
            {
                Device.StartTimer(TimeSpan.FromMilliseconds(GetAnimationDuration(currentAnimPade.PageAnimation)), delegate
                {
                    currentAnimPade.OnAnimationFinished(removed);
                    return(false);
                });
            }
            _hepler.SetNavAnimationInProgress(Element, false);
            return(tcs.Task);
        }
        Task <bool> SwitchContentAsync(Page page, bool animated, bool removed = false, bool popToRoot = false)
        {
            if (!Element.IsAttachedToRoot())
            {
                return(Task.FromResult(false));
            }

            var      tcs      = new TaskCompletionSource <bool>();
            Fragment fragment = GetFragment(page, removed, popToRoot);

#if DEBUG
            // Enables logging of moveToState operations to logcat
            FragmentManager.EnableDebugLogging(true);
#endif

            Current?.SendDisappearing();
            Current = page;

            if (Platform != null)
            {
                Platform.NavAnimationInProgress = true;
            }

            FragmentTransaction transaction = FragmentManager.BeginTransactionEx();

            if (animated)
            {
                SetupPageTransition(transaction, !removed);
            }

            var fragmentsToRemove = new List <Fragment>();

            if (_fragmentStack.Count == 0)
            {
                transaction.AddEx(Id, fragment);
                _fragmentStack.Add(fragment);
            }
            else
            {
                if (removed)
                {
                    // pop only one page, or pop everything to the root
                    var popPage = true;
                    while (_fragmentStack.Count > 1 && popPage)
                    {
                        Fragment currentToRemove = _fragmentStack.Last();
                        _fragmentStack.RemoveAt(_fragmentStack.Count - 1);
                        transaction.HideEx(currentToRemove);
                        fragmentsToRemove.Add(currentToRemove);
                        popPage = popToRoot;
                    }

                    Fragment toShow = _fragmentStack.Last();
                    // Execute pending transactions so that we can be sure the fragment list is accurate.
                    FragmentManager.ExecutePendingTransactionsEx();
                    if (FragmentManager.Fragments.Contains(toShow))
                    {
                        transaction.ShowEx(toShow);
                    }
                    else
                    {
                        transaction.AddEx(Id, toShow);
                    }
                }
                else
                {
                    // push
                    Fragment currentToHide = _fragmentStack.Last();
                    transaction.HideEx(currentToHide);
                    transaction.AddEx(Id, fragment);
                    _fragmentStack.Add(fragment);
                }
            }

            // We don't currently support fragment restoration, so we don't need to worry about
            // whether the commit loses state
            transaction.CommitAllowingStateLossEx();

            // The fragment transitions don't really SUPPORT telling you when they end
            // There are some hacks you can do, but they actually are worse than just doing this:

            if (animated)
            {
                if (!removed)
                {
                    UpdateToolbar();
                    if (_drawerToggle != null && NavigationPageController.StackDepth == 2)
                    {
                        AnimateArrowIn();
                    }
                }
                else if (_drawerToggle != null && NavigationPageController.StackDepth == 2)
                {
                    AnimateArrowOut();
                }

                AddTransitionTimer(tcs, fragment, FragmentManager, fragmentsToRemove, TransitionDuration, removed);
            }
            else
            {
                AddTransitionTimer(tcs, fragment, FragmentManager, fragmentsToRemove, 1, true);
            }

            Context.HideKeyboard(this);

            if (Platform != null)
            {
                Platform.NavAnimationInProgress = false;
            }

            return(tcs.Task);
        }
        protected override void OnCreate(Bundle bundle)
        {
            try
            {
                base.OnCreate(bundle);
                SetContentView(Resource.Layout.activity_maincontent);

                mToolbar      = FindViewById <SupportToolbar>(Resource.Id.m_toolbar);
                mDrawerLayout = FindViewById <DrawerLayout>(Resource.Id.m_drawer_layout);
                mLeftDrawer   = FindViewById <ListView>(Resource.Id.m_left_drawer);

                dashboardFragment       = new DashboardFragment();
                myFarmDashboardFragment = new MyFarmDashboardFragment();
                myProfileFragment       = new MyProfileFragment();
                addActivityFragment     = new AddActivityFragment();
                activityViewerFragment  = new ActivityViewerFragment();
                askAggieFragment        = new AskAggieFragment();
                settingsFragment        = new SettingsFragment();
                contactFragment         = new ContactFragment();
                chatbotFragment         = new ChatbotFragment();
                chatListManagerFragment = new ChatListManagerFragment();

                mStackFragments = new Stack <SupportFragment>();

                mLeftDrawer.Tag = 0;

                SetSupportActionBar(mToolbar);

                mLeftDataSet = new List <string>();
                mLeftDataSet.Add("My Dashboard");
                mLeftDataSet.Add("My Farm");
                mLeftDataSet.Add("My Profile");
                mLeftDataSet.Add("Add Activitiy");
                mLeftDataSet.Add("View Activities");
                /*mLeftDataSet.Add("Ask an Aggie");*/
                /*mLeftDataSet.Add("Settings");*/

                var objdbTemp = new DBaseOperations();
                var lstux     = objdbTemp.selectTable();
                if (lstux != null && lstux.Count > default(int))
                {
                    var uobj = lstux.FirstOrDefault();
                    if (uobj != null && uobj.IsAdmin > default(int))
                    {
                        mLeftDataSet.Add("Chat Management");
                    }
                    else
                    {
                        mLeftDataSet.Add("Ask an Aggie");
                    }
                }
                else
                {
                    mLeftDataSet.Add("Ask an Aggie");
                }

                mLeftDataSet.Add("Contact Us");
                mLeftAdapter           = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleListItem1, mLeftDataSet);
                mLeftDrawer.Adapter    = mLeftAdapter;
                mLeftDrawer.ItemClick += MenuListView_ItemClick;

                mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, Resource.String.openDrawer, Resource.String.closeDrawer);

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

                if (bundle != null)
                {
                    if (bundle.GetString("DrawerState") == "Opened")
                    {
                        SupportActionBar.SetTitle(Resource.String.openDrawer);
                    }
                    else
                    {
                        SupportActionBar.SetTitle(Resource.String.closeDrawer);
                    }
                }
                else
                {
                    SupportActionBar.SetTitle(Resource.String.closeDrawer);
                }

                try
                {
                    string mStringLoginInfo    = string.Empty;
                    string mStringSessionToken = string.Empty;
                    string mStringGoodName     = string.Empty;
                    circular_imageViewLogo = this.FindViewById <Refractored.Controls.CircleImageView>(Resource.Id.circular_imageViewLogo);
                    imageViewLogo          = this.FindViewById <ImageView>(Resource.Id.imageViewLogo);
                    textView = this.FindViewById <TextView>(Resource.Id.textView);
                    try
                    {
                        objdb = new DBaseOperations();
                        var lstu = objdb.selectTable();
                        if (lstu != null && lstu.Count > default(int))
                        {
                            var uobj = lstu.FirstOrDefault();
                            if (uobj.Password == " ")
                            {
                                throw new Exception("Please login again");
                            }
                            mStringLoginInfo    = uobj.EmailId;
                            mStringSessionToken = uobj.AuthToken;
                            mStringGoodName     = uobj.GoodName;
                            _profilepicbase64   = uobj.ProfilePicture;
                        }
                    }
                    catch { }

                    if (!string.IsNullOrEmpty(_profilepicbase64))
                    {
                        var btmpimg = BitmapHelpers.Base64ToBitmap(_profilepicbase64);
                        circular_imageViewLogo.Visibility = ViewStates.Visible;
                        imageViewLogo.Visibility          = ViewStates.Gone;
                        textView.Text = string.Format("Hello, {0}", mStringGoodName);
                        circular_imageViewLogo.RecycleBitmap();
                        circular_imageViewLogo.SetImageBitmap(btmpimg);
                    }
                    else
                    {
                        circular_imageViewLogo.Visibility = ViewStates.Gone;
                        imageViewLogo.Visibility          = ViewStates.Visible;
                        textView.Text = !string.IsNullOrEmpty(mStringGoodName) ? string.Format("Hello, {0}", mStringGoodName) : "";
                    }
                }
                catch { }

                IList <Android.Support.V4.App.Fragment> fragmentsarray = SupportFragmentManager.Fragments;
                if (fragmentsarray != null && fragmentsarray.Count > default(int))
                {
                    foreach (Android.Support.V4.App.Fragment fragment in fragmentsarray)
                    {
                        string tag = fragment.Tag;
                        Android.Support.V4.App.FragmentTransaction tx = SupportFragmentManager.BeginTransaction();
                        tx.Replace(Resource.Id.m_main, fragment, fragment.Tag);
                        tx.Commit();
                        break;
                    }
                }
                else
                {
                    Android.Support.V4.App.FragmentTransaction tx = SupportFragmentManager.BeginTransaction();
                    tx.Replace(Resource.Id.m_main, dashboardFragment, Constants.dashboard);
                    tx.Commit();
                }
            }
            catch (Exception ex)
            {
                this.RunOnUiThread(() =>
                {
                    Android.App.AlertDialog.Builder alertDiag = new Android.App.AlertDialog.Builder(this);
                    alertDiag.SetTitle(Resource.String.DialogHeaderError);
                    alertDiag.SetMessage(ex.Message);
                    alertDiag.SetIcon(Resource.Drawable.alert);
                    alertDiag.SetPositiveButton(Resource.String.DialogButtonOk, (senderAlert, args) =>
                    {
                        Intent intent = new Intent(this, typeof(MainActivity));
                        StartActivity(intent);
                        this.Finish();
                    });
                    Dialog diag = alertDiag.Create();
                    diag.Show();
                    diag.SetCanceledOnTouchOutside(false);
                });
            }
        }
Example #30
0
        protected void GetPlotsByUser(ProgressDialog dialog, Activity curActivity, ViewGroup root, string frmid)
        {
            try
            {
                string mStringLoginInfo    = string.Empty;
                string mStringSessionToken = string.Empty;
                try
                {
                    objdb = new DBaseOperations();
                    var lstu = objdb.selectTable();
                    if (lstu != null && lstu.Count > default(int))
                    {
                        var uobj = lstu.FirstOrDefault();
                        if (uobj.Password == " ")
                        {
                            throw new Exception("Please login again");
                        }
                        mStringLoginInfo    = uobj.EmailId;
                        mStringSessionToken = uobj.AuthToken;
                    }
                }
                catch { }

                var client  = new RestClient(Common.UrlBase);
                var request = new RestRequest("Plot/GetPlotListDetails", Method.GET);
                request.AddHeader("Content-Type", "application/json");
                request.AddHeader("TokenKey", mStringSessionToken);
                request.AddQueryParameter("farmid", System.Net.WebUtility.UrlEncode(frmid));
                IRestResponse response    = client.Execute(request);
                var           content     = response.Content;
                var           responseObj = Newtonsoft.Json.JsonConvert.DeserializeObject <List <PlotDetailResponse> >(content);
                if (responseObj != null && responseObj.Count() > default(int))
                {
                    var newresponseObj = responseObj.OrderBy(o => o.PlotName);
                    if (newresponseObj != null && newresponseObj.Count() > default(int) && newresponseObj.FirstOrDefault() != null && !string.IsNullOrEmpty(newresponseObj.FirstOrDefault().PlotId))
                    {
                        gridViewString     = newresponseObj.Select(s => s.PlotName).ToArray();
                        gridViewCodeString = newresponseObj.Select(p => p.PlotId).ToArray();
                        var sp = newresponseObj.Select(s => s.PlotName).ToArray();
                        var sd = new List <string>();
                        foreach (var s in sp)
                        {
                            sd.Add(s[0].ToString().ToUpper());
                        }
                        gridViewLetterImage = sd.ToArray();
                        _letter_grid_menu_helper adapterViewAndroid = new _letter_grid_menu_helper(this.Activity, gridViewString, gridViewCodeString, gridViewLetterImage);
                        androidGridView = root.FindViewById <GridView>(Resource.Id.grid_view_plot_list_l);
                        new System.Threading.Thread(new System.Threading.ThreadStart(() =>
                        {
                            if (this.Activity != null)
                            {
                                this.Activity.RunOnUiThread(() =>
                                {
                                    androidGridView.SetAdapter(adapterViewAndroid);
                                });
                            }
                        })).Start();
                        androidGridView.ItemClick += (sndr, argus) => ItemSearch_clicked(sndr, argus, this.Activity);
                    }
                    else
                    {
                        throw new Exception("No plot found in our system");
                    }
                }
            }
            catch (Exception ex)
            {
                curActivity.RunOnUiThread(() =>
                {
                    Android.App.AlertDialog.Builder alertDiag = new Android.App.AlertDialog.Builder(curActivity);
                    alertDiag.SetTitle(Resource.String.DialogHeaderError);
                    alertDiag.SetMessage(ex.Message);
                    alertDiag.SetIcon(Resource.Drawable.alert);
                    alertDiag.SetPositiveButton(Resource.String.DialogButtonOk, (senderAlert, args) =>
                    {
                        MyFarmDashboardFragment objFragment           = new MyFarmDashboardFragment();
                        Android.Support.V4.App.FragmentTransaction tx = FragmentManager.BeginTransaction();
                        tx.Replace(Resource.Id.m_main, objFragment, Constants.myfarmdash);
                        tx.Commit();
                    });
                    Dialog diag = alertDiag.Create();
                    diag.Show();
                    diag.SetCanceledOnTouchOutside(false);
                });
            }
            finally
            {
                if (dialog != null && dialog.IsShowing)
                {
                    dialog.Hide();
                    dialog.Dismiss();
                }
            }
        }
        protected override void Dispose(bool disposing)
        {
            if (disposing && !_disposed)
            {
                _disposed = true;

                var activity = (FormsAppCompatActivity)Context;

                // API only exists on newer android YAY
                if ((int)Build.VERSION.SdkInt >= 17)
                {
                    if (!activity.IsDestroyed)
                    {
                        FragmentManager     fm    = FragmentManager;
                        FragmentTransaction trans = fm.BeginTransaction();
                        foreach (Fragment fragment in _fragmentStack)
                        {
                            trans.Remove(fragment);
                        }
                        trans.CommitAllowingStateLoss();
                        fm.ExecutePendingTransactions();
                    }
                }

                if (Element != null)
                {
                    foreach (Element element in PageController.InternalChildren)
                    {
                        var child = element as VisualElement;
                        if (child == null)
                        {
                            continue;
                        }

                        IVisualElementRenderer renderer = Android.Platform.GetRenderer(child);
                        renderer?.Dispose();
                    }

                    var navController = (INavigationPageController)Element;

                    navController.PushRequested             -= OnPushed;
                    navController.PopRequested              -= OnPopped;
                    navController.PopToRootRequested        -= OnPoppedToRoot;
                    navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested;
                    navController.RemovePageRequested       -= OnRemovePageRequested;
                }

                if (_toolbarTracker != null)
                {
                    _toolbarTracker.CollectionChanged -= ToolbarTrackerOnCollectionChanged;
                    _toolbarTracker.Target             = null;
                    _toolbarTracker = null;
                }

                if (_toolbar != null)
                {
                    _toolbar.NavigationClick -= BarOnNavigationClick;
                    _toolbar.Dispose();
                    _toolbar = null;
                }

                if (_drawerLayout != null && _drawerListener != null)
                {
                    _drawerLayout.RemoveDrawerListener(_drawerListener);
                }

                _drawerToggle = null;

                Current = null;

                Device.Info.PropertyChanged -= DeviceInfoPropertyChanged;
            }

            base.Dispose(disposing);
        }
 public override void DestroyItem(ViewGroup container, int position, Object @object)
 {
     var dataContext = @object.DataContext();
     if (position != PositionNone)
         position = GetPosition(dataContext);
     bool removed = position == PositionNone;
     var fragment = @object as Fragment;
     if (fragment == null)
     {
         var view = (View)@object;
         container.RemoveView(view);
     }
     else
     {
         if (_currentTransaction == null)
             _currentTransaction = _fragmentManager.BeginTransaction();
         if (removed)
             _currentTransaction.Remove(fragment);
         else
             _currentTransaction.Detach(fragment);
     }
 }
        Task <bool> SwitchContentAsync(Page view, bool animated, bool removed = false, bool popToRoot = false)
        {
            var             tcs       = new TaskCompletionSource <bool>();
            Fragment        fragment  = FragmentContainer.CreateInstance(view);
            FragmentManager fm        = FragmentManager;
            List <Fragment> fragments = _fragmentStack;

            Current = view;

            ((Platform)Element.Platform).NavAnimationInProgress = true;
            FragmentTransaction transaction = fm.BeginTransaction();

            if (animated)
            {
                SetupPageTransition(transaction, !removed);
            }

            transaction.DisallowAddToBackStack();

            if (fragments.Count == 0)
            {
                transaction.Add(Id, fragment);
                fragments.Add(fragment);
            }
            else
            {
                if (removed)
                {
                    // pop only one page, or pop everything to the root
                    var popPage = true;
                    while (fragments.Count > 1 && popPage)
                    {
                        Fragment currentToRemove = fragments.Last();
                        fragments.RemoveAt(fragments.Count - 1);
                        transaction.Remove(currentToRemove);
                        popPage = popToRoot;
                    }

                    Fragment toShow = fragments.Last();
                    // Execute pending transactions so that we can be sure the fragment list is accurate.
                    fm.ExecutePendingTransactions();
                    if (fm.Fragments.Contains(toShow))
                    {
                        transaction.Show(toShow);
                    }
                    else
                    {
                        transaction.Add(Id, toShow);
                    }
                }
                else
                {
                    // push
                    Fragment currentToHide = fragments.Last();
                    transaction.Hide(currentToHide);
                    transaction.Add(Id, fragment);
                    fragments.Add(fragment);
                }
            }
            transaction.Commit();

            // The fragment transitions don't really SUPPORT telling you when they end
            // There are some hacks you can do, but they actually are worse than just doing this:

            if (animated)
            {
                if (!removed)
                {
                    UpdateToolbar();
                    if (_drawerToggle != null && ((INavigationPageController)Element).StackDepth == 2)
                    {
                        AnimateArrowIn();
                    }
                }
                else if (_drawerToggle != null && ((INavigationPageController)Element).StackDepth == 2)
                {
                    AnimateArrowOut();
                }

                Device.StartTimer(TimeSpan.FromMilliseconds(200), () =>
                {
                    tcs.TrySetResult(true);
                    fragment.UserVisibleHint = true;
                    if (removed)
                    {
                        UpdateToolbar();
                    }
                    return(false);
                });
            }
            else
            {
                Device.StartTimer(TimeSpan.FromMilliseconds(1), () =>
                {
                    tcs.TrySetResult(true);
                    fragment.UserVisibleHint = true;
                    UpdateToolbar();
                    return(false);
                });
            }

            Context.HideKeyboard(this);
            ((Platform)Element.Platform).NavAnimationInProgress = false;

            // 200ms is how long the animations are, and they are "reversible" in the sense that starting another one slightly before it's done is fine

            return(tcs.Task);
        }
		public void OnTabUnselected (SherlockActionBar.Tab tab, FragmentTransaction transaction)
		{
		}
Example #35
0
        public void DisplayFragment(Fragment newFragment, View sharedElement = null)
        {
            try
            {
                FragmentTransaction ft = Context.SupportFragmentManager.BeginTransaction();

                if (sharedElement != null)
                {
                    if ((int)Build.VERSION.SdkInt >= 22)
                    {
                        ft.AddSharedElement(sharedElement, "Image");
                    }
                }
                HideFragmentFromList(FragmentListTab0, ft);
                HideFragmentFromList(FragmentListTab1, ft);
                HideFragmentFromList(FragmentListTab2, ft);
                HideFragmentFromList(FragmentListTab3, ft);
                HideFragmentFromList(FragmentListTab4, ft);

                if (PageNumber == 0)
                {
                    if (!FragmentListTab0.Contains(newFragment))
                    {
                        FragmentListTab0.Add(newFragment);
                    }
                }

                if (PageNumber == 1)
                {
                    if (!FragmentListTab1.Contains(newFragment))
                    {
                        FragmentListTab1.Add(newFragment);
                    }
                }

                if (PageNumber == 2)
                {
                    if (!FragmentListTab2.Contains(newFragment))
                    {
                        FragmentListTab2.Add(newFragment);
                    }
                }

                if (PageNumber == 3)
                {
                    if (!FragmentListTab3.Contains(newFragment))
                    {
                        FragmentListTab3.Add(newFragment);
                    }
                }

                if (PageNumber == 4)
                {
                    if (!FragmentListTab4.Contains(newFragment))
                    {
                        FragmentListTab4.Add(newFragment);
                    }
                }

                if (!newFragment.IsAdded)
                {
                    ft.Add(Resource.Id.mainFragmentHolder, newFragment, newFragment.Id.ToString());
                }


                // ft.SetCustomAnimations(Resource.Animation.fab_scale_down, Resource.Animation.fab_scale_up);


                ft.Show(newFragment).Commit();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
            public void OnTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
            {
                if (_cleared)
                    return;
                var bar = (ActionBar)tab.GetBindingMemberValue(AttachedMembers.Object.Parent);
                var placeHolder = ActionBarView.GetTabContentId(bar);
                var activity = bar.ThemedContext.GetActivity();
                SetContent(tab, ft, placeHolder, activity, bar);
                //Set selected item data context or tab
                var selectedItem = bar.GetBindingMemberValue(ItemsSourceGeneratorBase.MemberDescriptor) == null ? tab : tab.GetDataContext();
#if APPCOMPAT
                bar.SetBindingMemberValue(AttachedMembersCompat.ActionBar.SelectedItem, selectedItem);
#else
                bar.SetBindingMemberValue(AttachedMembers.ActionBar.SelectedItem, selectedItem);
#endif
            }
Example #37
0
        public void DisplayFragmentOnSamePage(Fragment newFragment)
        {
            try
            {
                FragmentTransaction ft = Context.SupportFragmentManager.BeginTransaction();

                HideFragmentFromList(FragmentListTab0, ft);
                HideFragmentFromList(FragmentListTab1, ft);
                HideFragmentFromList(FragmentListTab2, ft);
                HideFragmentFromList(FragmentListTab3, ft);
                HideFragmentFromList(FragmentListTab4, ft);

                if (PageNumber == 0)
                {
                    if (!FragmentListTab0.Contains(newFragment))
                    {
                        FragmentListTab0.Add(newFragment);
                    }
                }

                if (PageNumber == 1)
                {
                    if (!FragmentListTab1.Contains(newFragment))
                    {
                        FragmentListTab1.Add(newFragment);
                    }
                }

                if (PageNumber == 2)
                {
                    if (!FragmentListTab2.Contains(newFragment))
                    {
                        FragmentListTab2.Add(newFragment);
                    }
                }

                if (PageNumber == 3)
                {
                    if (!FragmentListTab3.Contains(newFragment))
                    {
                        FragmentListTab3.Add(newFragment);
                    }
                }

                if (PageNumber == 4)
                {
                    if (!FragmentListTab4.Contains(newFragment))
                    {
                        FragmentListTab4.Add(newFragment);
                    }
                }

                if (!newFragment.IsAdded)
                {
                    ft.Add(Resource.Id.mainFragmentHolder, newFragment, newFragment.Id.ToString());
                }

                ft.Show(newFragment).CommitAllowingStateLoss();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
            private void SetContent(ActionBar.Tab tab, FragmentTransaction ft, int? placeHolder, Activity activity, ActionBar bar)
            {
                if (placeHolder == null)
                {
                    Tracer.Error("The placeholder for tab {0} was not found.", tab);
                    return;
                }
                var layout = activity.FindViewById<ViewGroup>(placeHolder.Value);
                if (layout == null)
                {
                    Tracer.Warn("The ActionBarTabContentId with id = {0} is not found in activity {1}",
                        placeHolder.Value,
                        activity);
                    return;
                }
                if (_content == null)
                {
#if APPCOMPAT
                    _content = tab.GetBindingMemberValue(AttachedMembersCompat.ActionBarTab.Content);
#else
                    _content = tab.GetBindingMemberValue(AttachedMembers.ActionBarTab.Content);
#endif

                    var viewModel = _content as IViewModel;
                    if (viewModel == null)
                    {
                        var fragmentClass = _content as string;
                        //If content is a string, trying to create a fragment.
                        if (!string.IsNullOrEmpty(fragmentClass))
                        {
                            var type = TypeCache<Fragment>.Instance.GetTypeByName(fragmentClass, true, false);
                            if (type != null)
                            {
                                var fragment = Fragment.Instantiate(bar.ThemedContext, Java.Lang.Class.FromType(type).Name);
                                _content = fragment;
                            }
                        }
                        else if (_content is int)
                            _content = activity.GetBindableLayoutInflater().Inflate((int)_content, null);
                    }
                    else
                        viewModel.Settings.Metadata.AddOrUpdate(ViewModelConstants.StateNotNeeded, true);
                    _content = PlatformExtensions.GetContentView(layout, layout.Context, _content,
                        _contentTemplateProvider.GetTemplateId(), _contentTemplateProvider.GetDataTemplateSelector());
                    layout.SetContentView(_content, ft, (@group, fragment, arg3) =>
                    {
                        if (fragment.IsDetached)
                            arg3.Attach(fragment);
                        else
                            arg3.Replace(@group.Id, fragment);
                    });
                }
                else
                    layout.SetContentView(_content, ft, (@group, fragment, arg3) => arg3.Attach(fragment));
            }
Example #39
0
        private void RemoveFragment(Fragment oldFragment)
        {
            try
            {
                FragmentTransaction ft = Context.SupportFragmentManager.BeginTransaction();

                if (PageNumber == 0)
                {
                    if (FragmentListTab0.Contains(oldFragment))
                    {
                        FragmentListTab0.Remove(oldFragment);
                    }
                }

                if (PageNumber == 1)
                {
                    if (FragmentListTab1.Contains(oldFragment))
                    {
                        FragmentListTab1.Remove(oldFragment);
                    }
                }

                if (PageNumber == 2)
                {
                    if (FragmentListTab2.Contains(oldFragment))
                    {
                        FragmentListTab2.Remove(oldFragment);
                    }
                }

                if (PageNumber == 3)
                {
                    if (FragmentListTab3.Contains(oldFragment))
                    {
                        FragmentListTab3.Remove(oldFragment);
                    }
                }

                if (PageNumber == 4)
                {
                    if (FragmentListTab4.Contains(oldFragment))
                    {
                        FragmentListTab4.Remove(oldFragment);
                    }
                }


                HideFragmentFromList(FragmentListTab0, ft);
                HideFragmentFromList(FragmentListTab1, ft);
                HideFragmentFromList(FragmentListTab2, ft);
                HideFragmentFromList(FragmentListTab3, ft);
                HideFragmentFromList(FragmentListTab4, ft);

                if (oldFragment.IsAdded)
                {
                    ft.Remove(oldFragment);
                }

                switch (PageNumber)
                {
                case 0:
                {
                    var currentFragment = FragmentListTab0[FragmentListTab0.Count - 1];
                    ft.Show(currentFragment).Commit();
                    break;
                }

                case 1:
                {
                    var currentFragment = FragmentListTab1[FragmentListTab1.Count - 1];
                    ft.Show(currentFragment).Commit();
                    break;
                }

                case 2:
                {
                    var currentFragment = FragmentListTab2[FragmentListTab2.Count - 1];
                    ft.Show(currentFragment).Commit();
                    break;
                }

                case 3:
                {
                    var currentFragment = FragmentListTab3[FragmentListTab3.Count - 1];
                    ft.Show(currentFragment).Commit();
                    break;
                }

                case 4:
                {
                    var currentFragment = FragmentListTab4[FragmentListTab4.Count - 1];
                    ft.Show(currentFragment).Commit();
                    break;
                }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
        public override Object InstantiateItem(ViewGroup container, int position)
        {
            if (ItemsSource == null)
                return null;
            var item = GetRawItem(position);
            if (item == null)
                return new TextView(container.Context) { Text = "(null)" };
            var viewModel = item as IViewModel;
            if (viewModel != null)
                viewModel.Settings.Metadata.AddOrUpdate(ViewModelConstants.StateNotNeeded, true);

            var view = ServiceProvider.AttachedValueProvider.GetOrAdd(item, ContentPath,
                (o, o1) => (Object)PlatformExtensions.GetContentView(container, container.Context, o,
                    _itemTemplateProvider.GetTemplateId(), _itemTemplateProvider.GetDataTemplateSelector()), null);
            var fragment = view as Fragment;
            if (fragment == null)
                container.AddView((View)view);
            else
            {
                if (_currentTransaction == null)
                    _currentTransaction = _fragmentManager.BeginTransaction();
                if (fragment.IsDetached)
                    _currentTransaction.Attach(fragment);
                else if (!fragment.IsAdded)
                    _currentTransaction.Add(container.Id, fragment);
                if (fragment != _currentPrimaryItem)
                {
                    fragment.SetMenuVisibility(false);
                    fragment.UserVisibleHint = false;
                }
            }
            return view;
        }
Example #41
0
        public override void OnBeforeFragmentChanging(IMvxCachedFragmentInfo fragmentInfo, Android.Support.V4.App.FragmentTransaction transaction)
        {
            var currentFrag = SupportFragmentManager.FindFragmentById(Resource.Id.content_frame) as MvxFragment;

            if (currentFrag != null && fragmentInfo.ViewModelType != typeof(MenuViewModel) &&
                currentFrag.FindAssociatedViewModelType() != fragmentInfo.ViewModelType)
            {
                fragmentInfo.AddToBackStack = true;
            }
            base.OnBeforeFragmentChanging(fragmentInfo, transaction);
        }
 public override void DestroyItem(ViewGroup container, int position, Object @object)
 {
     var dataContext = @object.DataContext();
     if (position != PositionNone)
         position = GetPosition(dataContext);
     bool removed = position == PositionNone;
     if (removed && dataContext != null)
         ServiceProvider.AttachedValueProvider.Clear(dataContext, ContentPath);
     var fragment = @object as Fragment;
     if (fragment == null)
     {
         var view = (View)@object;
         container.RemoveView(view);
         if (removed)
             view.ClearBindingsRecursively(true, true);
     }
     else
     {
         if (_currentTransaction == null)
             _currentTransaction = _fragmentManager.BeginTransaction();
         if (removed)
             _currentTransaction.Remove(fragment);
         else
             _currentTransaction.Detach(fragment);
     }
 }
 public void OnTabUnselected(ActionBar.Tab tab, Android.Support.V4.App.FragmentTransaction ft)
 {
 }