package fr.paug.androidmakers.ui.activity; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import fr.paug.androidmakers.R; import fr.paug.androidmakers.ui.fragment.AboutFragment; import fr.paug.androidmakers.ui.fragment.AgendaFragment; import fr.paug.androidmakers.ui.fragment.VenuePagerFragment; public class MainActivity extends BaseActivity { private static final String TAG_FRAGMENT_AGENDA = "TAG_FRAGMENT_AGENDA"; private static final String TAG_FRAGMENT_VENUE = "TAG_FRAGMENT_VENUE"; private static final String TAG_FRAGMENT_ABOUT = "TAG_FRAGMENT_ABOUT"; private Fragment fragment; private FragmentManager fragmentManager; private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { String tag; switch (item.getItemId()) { case R.id.navigation_agenda: tag = TAG_FRAGMENT_AGENDA; break; case R.id.navigation_venue: tag = TAG_FRAGMENT_VENUE; break; case R.id.navigation_about: tag = TAG_FRAGMENT_ABOUT; break; default: return false; } fragment = fragmentManager.findFragmentByTag(tag); if (fragment == null) fragment = newFragmentByTag(tag); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.fragment_container, fragment, tag); transaction.commit(); return true; } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fragmentManager = getSupportFragmentManager(); if (savedInstanceState == null) { addAgenda(); } BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); } private void addAgenda() { fragment = new AgendaFragment(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.add(R.id.fragment_container, fragment, TAG_FRAGMENT_AGENDA).commit(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @NonNull private Fragment newFragmentByTag(@NonNull String tag) { switch (tag) { case TAG_FRAGMENT_VENUE: return new VenuePagerFragment(); case TAG_FRAGMENT_ABOUT: return new AboutFragment(); case TAG_FRAGMENT_AGENDA: default: return new AgendaFragment(); } } }