package com.ponyvillelive.pvlmobile.ui; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import com.ponyvillelive.pvlmobile.PvlApp; import com.ponyvillelive.pvlmobile.R; import com.ponyvillelive.pvlmobile.model.Station; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import butterknife.ButterKnife; import timber.log.Timber; public class MainActivity extends BaseActivity implements StationFragment.StationFragmentListener, BottomDrawerFragment.DrawerListener { private static final String BUNDLE_KEY_STATION = "bundle_key_station"; @Inject AppContainer appContainer; private boolean tester = false; private Station station; @Override protected void onCreate(Bundle savedInstanceState) { PvlApp app = PvlApp.get(this); app.inject(this); long start = System.nanoTime(); super.onCreate(savedInstanceState); ViewGroup container = appContainer.get(this, app); View view = getLayoutInflater().inflate(R.layout.activity_main, container); initializeToolbar(); ButterKnife.inject(this, view); long diff = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start); Timber.d("Took %sms to inject activity", diff); FragmentManager manager = getSupportFragmentManager(); manager.beginTransaction() .add(R.id.container, StationFragment.newInstance(Station.STATION_TYPE_AUDIO)) .commit(); if (savedInstanceState != null && savedInstanceState.containsKey(BUNDLE_KEY_STATION)) { station = savedInstanceState.getParcelable(BUNDLE_KEY_STATION); handleStationSelected(station); } } @Override public boolean handleStationSelected(Station station) { this.station = station; return true; // TODO: Fire intent for media server } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); // Show the menu return true; } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (station != null) { outState.putParcelable(BUNDLE_KEY_STATION, station); } } @Override protected void onMediaControllerConnected() { // TODO } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); switch (id) { case R.id.action_settings: return true; case R.id.action_tester: tester = !tester; item.setChecked(tester); return true; default: return super.onOptionsItemSelected(item); } } @Override public void handleStationCleared() { this.station = null; } public class FragmentTabAdapter extends FragmentPagerAdapter { private final String[] titles; // Removing Fragments until the actual fragment is ready private final Fragment[] fragments = new Fragment[]{ StationFragment.newInstance(Station.STATION_TYPE_AUDIO), StationFragment.newInstance(Station.STATION_TYPE_VIDEO), }; public FragmentTabAdapter(FragmentManager manager) { super(manager); titles = getResources().getStringArray(R.array.navItems); } @Override public CharSequence getPageTitle(int position) { return titles[position]; } @Override public int getCount() { return fragments.length; } @Override public Fragment getItem(int position) { return fragments[position]; } } }