package com.example.development.androidmsample; import android.os.Bundle; import android.support.design.widget.NavigationView; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import com.example.development.androidmsample.fragments.BaseFragment; import com.example.development.androidmsample.fragments.FooterBarFragment; import com.example.development.androidmsample.fragments.PercentRelativeLayoutFragment; import com.example.development.androidmsample.fragments.TabLayoutFragment; import com.example.development.androidmsample.fragments.ToolbarFragment; import com.example.development.androidmsample.utils.Navigator; import butterknife.Bind; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements DrawerLayout.DrawerListener , NavigationView.OnNavigationItemSelectedListener { @Bind(R.id.drawer_layout) DrawerLayout mDrawerLayout; @Bind(R.id.navigation_view) NavigationView mNavigationView; private ActionBarDrawerToggle mDrawerToggle; private int mCurrentMenuItem; private static Navigator mNavigator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); initNavigator(); setupNavDrawer(); if(savedInstanceState==null){ setRootFragment(ToolbarFragment.newInstance()); } } @Override protected void onResumeFragments() { super.onResumeFragments(); } @Override protected void onPostResume() { super.onPostResume(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); // Sync the toggle state after onRestoreInstanceState has occurred. mDrawerToggle.syncState(); } private void initNavigator() { if (mNavigator != null) return; mNavigator = new Navigator(getSupportFragmentManager(), R.id.container); } private void setRootFragment(BaseFragment fragment) { mNavigator.setRootFragment(fragment); mDrawerLayout.closeDrawers(); } private void setupNavDrawer() { mDrawerLayout.setDrawerListener(this); mDrawerToggle = new ActionBarDrawerToggle(this , mDrawerLayout , null , R.string.navigation_drawer_open , R.string.navigation_drawer_close); mDrawerToggle.syncState(); mNavigationView.setNavigationItemSelectedListener(this); } @Override public void onDrawerSlide(View drawerView, float slideOffset) { mDrawerToggle.onDrawerSlide(drawerView, slideOffset); } @Override public void onDrawerOpened(View drawerView) { mDrawerToggle.onDrawerOpened(drawerView); } public void openDrawer(){ mDrawerLayout.openDrawer(Gravity.LEFT); } @Override public void onDrawerClosed(View drawerView) { mDrawerToggle.onDrawerClosed(drawerView); } @Override public void onDrawerStateChanged(int newState) { mDrawerToggle.onDrawerStateChanged(newState); } @Override public boolean onNavigationItemSelected(MenuItem menuItem) { int id = menuItem.getItemId(); if (id == mCurrentMenuItem) { mDrawerLayout.closeDrawers(); return false; } switch (id) { case R.id.toolbarLayout: setRootFragment(ToolbarFragment.newInstance()); break; case R.id.tabLayout: setRootFragment(TabLayoutFragment.newInstance()); break; case R.id.percentRelativeLayout: setRootFragment(PercentRelativeLayoutFragment.newInstance()); break; case R.id.footerQuickReturn: setRootFragment(FooterBarFragment.newInstance()); break; } mCurrentMenuItem = id; menuItem.setChecked(true); return false; } }