/// <summary>
 ///     Called immediately after
 ///     <c>
 ///         <see
 ///             cref="M:Android.App.Fragment.OnCreateView(Android.Views.LayoutInflater, Android.Views.ViewGroup, Android.Views.ViewGroup)" />
 ///     </c>
 ///     has returned, but before any saved state has been restored in to the view.
 /// </summary>
 public virtual void OnViewCreated(View view, Bundle savedInstanceState, Action <View, Bundle> baseOnViewCreated)
 {
     if (_dialogFragment == null)
     {
         if (view != null)
         {
             var actionBar = view.FindViewById <Views.ActionBar>(Resource.Id.ActionBarView);
             if (actionBar != null)
             {
                 actionBar.Apply(Target.Activity);
             }
         }
     }
     else
     {
         var dialog = _dialogFragment.Dialog;
         if (dialog != null)
         {
             TrySetTitleBinding();
             if (_keyListener == null)
             {
                 _keyListener = new DialogInterfaceOnKeyListener(this);
             }
             dialog.SetOnKeyListener(_keyListener);
         }
     }
     baseOnViewCreated(view, savedInstanceState);
 }
Пример #2
0
        public override void OnDestroy(Action baseOnDestroy)
        {
            if (Tracer.TraceInformation)
            {
                Tracer.Info("OnDestroy fragment({0})", Target);
            }
            RaiseDestroy();

            _view.RemoveFromParent();
            _view.ClearBindingsRecursively(true, true);
            _view = null;

            var dialogFragment = Target as DialogFragment;

            if (dialogFragment != null)
            {
                dialogFragment.Dialog.ClearBindings(true, true);
            }

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

            var viewModel = DataContext as IViewModel;

            if (viewModel != null)
            {
                viewModel.Settings.Metadata.Remove(PlatformExtensions.FragmentConstant);
                object stateManager;
                if (viewModel.Settings.Metadata.TryGetData(ViewModelConstants.StateManager, out stateManager) &&
                    stateManager == this)
                {
                    viewModel.Settings.Metadata.Remove(ViewModelConstants.StateManager);
                }
            }

            base.OnDestroy(baseOnDestroy);
            Closing   = null;
            Canceled  = null;
            Destroyed = null;
        }
 public virtual void OnStart(Action baseOnStart)
 {
     baseOnStart();
     if (!_isStarted)
     {
         _isStarted = true;
         var dialogFragment = Target as DialogFragment;
         var dialog         = dialogFragment?.Dialog;
         if (dialog != null)
         {
             TrySetTitleBinding(dialog);
             if (_keyListener == null)
             {
                 _keyListener = new DialogInterfaceOnKeyListener(this);
             }
             dialog.SetOnKeyListener(_keyListener);
         }
     }
 }
Пример #4
0
 public virtual void OnStart(Action baseOnStart)
 {
     baseOnStart();
     if (!_isStarted)
     {
         _isStarted = true;
         var dialogFragment = Target as DialogFragment;
         var dialog         = dialogFragment?.Dialog;
         if (dialog != null)
         {
             if (DataContext != null)
             {
                 dialog.BindFromExpression("Title DisplayName, Optional=true", new[] { DataContext });
             }
             if (_keyListener == null)
             {
                 _keyListener = new DialogInterfaceOnKeyListener(this);
             }
             dialog.SetOnKeyListener(_keyListener);
         }
     }
 }
Пример #5
0
        public virtual void OnViewCreated(View view, Bundle savedInstanceState, Action <View, Bundle> baseOnViewCreated)
        {
            var dialogFragment = Target as DialogFragment;

            if (dialogFragment == null)
            {
                PlatformExtensions.NotifyActivityAttached(Target.Activity, view);
            }
            else
            {
                var dialog = dialogFragment.Dialog;
                if (dialog != null)
                {
                    TrySetTitleBinding();
                    if (_keyListener == null)
                    {
                        _keyListener = new DialogInterfaceOnKeyListener(this);
                    }
                    dialog.SetOnKeyListener(_keyListener);
                }
            }
            baseOnViewCreated(view, savedInstanceState);
        }
        public override void OnDestroy(Action baseOnDestroy)
        {
            if (Tracer.TraceInformation)
            {
                Tracer.Info("OnDestroy fragment({0})", Target);
            }
            RaiseDestroy();
            ClearView();

            (Target as DialogFragment)?.Dialog.ClearBindings(true, true);

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

            (DataContext as IViewModel)?.Settings.Metadata.Remove(PlatformExtensions.FragmentConstant);
            base.OnDestroy(baseOnDestroy);
            Closing   = null;
            Canceled  = null;
            Destroyed = null;
        }