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); }
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); }
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)); }
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(); }
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; }
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); }
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 }
public void OnTabUnselected(SupportActionBar.Tab tab, SupportFragmentTransaction fragmentTransaction) { this.TabListener.OnTabUnselected(this.Tab, null); }
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); }
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(); } } }
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(); }
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); }); } }
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) { }
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 }
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)); }
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; }
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) { }