| /* | |
| * 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); | |
| } | |
| } |