예제 #1
0
        protected override void OnSaveInstanceState(Bundle outState)
        {
            base.OnSaveInstanceState(outState);
            CardStreamState state = CardStream.DumpState();

            mRetentionFragment.CardStream = state;
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.activity_main);

            var fm       = FragmentManager;
            var fragment = (BatchStepSensorFragment)fm.FindFragmentByTag(FRAGTAG);

            if (fragment == null)
            {
                var transaction = fm.BeginTransaction();
                fragment = new BatchStepSensorFragment();
                transaction.Add(fragment, FRAGTAG);
                transaction.Commit();
            }

            // Use fragment as click listener for cards, but must implement correct interface
            if (!(fragment is OnCardClickListener))
            {
                throw new InvalidCastException("BatchStepSensorFragment must implement OnCardClickListener interface.");
            }

            var clickListener = (OnCardClickListener)fm.FindFragmentByTag(FRAGTAG);

            mRetentionFragment = (StreamRetentionFragment)fm.FindFragmentByTag(RETENTION_TAG);
            if (mRetentionFragment == null)
            {
                mRetentionFragment = new StreamRetentionFragment();
                fm.BeginTransaction().Add(mRetentionFragment, RETENTION_TAG).Commit();
            }
            else
            {
                // If the retention fragment already existed, we need to pull a state.
                // Pull State out.
                CardStreamState state = mRetentionFragment.CardStream;

                // Dump it in CardStreamFragment;
                mCardStreamFragment = (CardStreamFragment)fm.FindFragmentById(Resource.Id.fragment_cardstream);
                mCardStreamFragment.RestoreState(state, clickListener);
            }
        }