/* * Copyright 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.batchstepsensor; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.Menu; import com.example.android.common.activities.SampleActivityBase; import com.example.android.common.logger.Log; import com.example.android.batchstepsensor.cardstream.CardStream; import com.example.android.batchstepsensor.cardstream.CardStreamFragment; import com.example.android.batchstepsensor.cardstream.CardStreamState; import com.example.android.batchstepsensor.cardstream.OnCardClickListener; import com.example.android.batchstepsensor.cardstream.StreamRetentionFragment; public class MainActivity extends SampleActivityBase implements CardStream { public static final String TAG = "MainActivity"; public static final String FRAGTAG = "BatchStepSensorFragment"; private CardStreamFragment mCardStreamFragment; private StreamRetentionFragment mRetentionFragment; private static final String RETENTION_TAG = "retention"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fm = getSupportFragmentManager(); BatchStepSensorFragment fragment = (BatchStepSensorFragment) fm.findFragmentByTag(FRAGTAG); if (fragment == null) { FragmentTransaction 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 instanceof OnCardClickListener)){ throw new ClassCastException("BatchStepSensorFragment must " + "implement OnCardClickListener interface."); } OnCardClickListener 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 some state. // pull state out CardStreamState state = mRetentionFragment.getCardStream(); // dump it in CardStreamFragment. mCardStreamFragment = (CardStreamFragment) fm.findFragmentById(R.id.fragment_cardstream); mCardStreamFragment.restoreState(state, clickListener); } } public CardStreamFragment getCardStream() { if (mCardStreamFragment == null) { mCardStreamFragment = (CardStreamFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_cardstream); } return mCardStreamFragment; } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); CardStreamState state = getCardStream().dumpState(); mRetentionFragment.storeCardStream(state); } }