package com.appolica.sample.activity;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.os.Parcelable;
import android.os.PersistableBundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.appolica.sample.R;
import com.appolica.sample.Tabs;
import com.appolica.sample.databinding.ActivityTabFragmentBinding;
import com.appolica.sample.tabs.BottomBarListener;
import com.appolica.tabcontroller.FragmentProvider;
import com.appolica.tabcontroller.TabController;
import com.appolica.tabcontroller.fragment.TabControllerFragment;
import com.appolica.tabcontroller.listener.OnFragmentChangeListener;
public class TabControllerFragmentActivity
extends AppCompatActivity
implements OnFragmentChangeListener,
BottomBarListener.BottomBarTabListener {
private static final String TAG = "TabControllerActivity";
private static final String BUNDLE_BOTTOM_BAR = TabControllerFragmentActivity.class.getName() + ":BottomBar";
private TabController tabController;
private ActivityTabFragmentBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_fragment_tab_controller);
final TabControllerFragment tabControllerFragment =
(TabControllerFragment) getSupportFragmentManager().findFragmentById(R.id.fragment);
tabController = tabControllerFragment.getTabController();
tabController.setChangeListener(this);
if (savedInstanceState != null) {
binding.bottomBar.onRestoreInstanceState(savedInstanceState.getParcelable(BUNDLE_BOTTOM_BAR));
}
binding.bottomBar.setOnTabSelectListener(new BottomBarListener(this), true);
}
@Override
public void onFragmentShown(FragmentProvider fragmentType, Fragment shownFragment) {
Log.d(TAG, "onFragmentShown: " + fragmentType.getTag());
}
@Override
public void onFragmentAlreadyVisible(FragmentProvider fragmentType, Fragment visibleFragment) {
Log.d(TAG, "onFragmentAlreadyVisible: " + fragmentType.getTag());
}
@Override
public void onFragmentCreated(FragmentProvider fragmentType, Fragment addedFragment) {
Log.d(TAG, "onFragmentCreated: " + fragmentType.getTag());
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
final Parcelable bottomBarParcelable = binding.bottomBar.onSaveInstanceState();
outState.putParcelable(BUNDLE_BOTTOM_BAR, bottomBarParcelable);
}
@Override
public void onStackSelected() {
tabController.switchTo(Tabs.TAB_1);
}
@Override
public void onViewPagerSelected() {
tabController.switchTo(Tabs.TAB_2);
}
@Override
public void onFlatSelected() {
tabController.switchTo(Tabs.TAB_3);
}
}