package com.ptrprograms.navigationdrawer.activities; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarActivity; import android.view.MenuItem; import android.view.View; import com.ptrprograms.navigationdrawer.R; import com.ptrprograms.navigationdrawer.events.DrawerNavigationItemClickedEvent; import com.ptrprograms.navigationdrawer.fragments.ImageFragment; import com.ptrprograms.navigationdrawer.fragments.NumberListFragment; import com.ptrprograms.navigationdrawer.fragments.TextFragment; import com.ptrprograms.navigationdrawer.utils.NavigationBus; import com.squareup.otto.Subscribe; public class MainActivity extends ActionBarActivity { private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mDrawerToggle; private NavigationBus mNavigationBus; private String mCurFragmentTitle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mNavigationBus = NavigationBus.getInstance(); initActionBar(); initViews(); initFragment(); initDrawer(); } private void initActionBar() { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } private void initViews() { mDrawerLayout = (DrawerLayout) findViewById( R.id.drawer_layout ); } private void initFragment() { getSupportFragmentManager().beginTransaction().add(R.id.container, ImageFragment.getInstance()).commit(); mCurFragmentTitle = getString( R.string.fragment_image ); } private void initDrawer() { mDrawerToggle = new ActionBarDrawerToggle( this, mDrawerLayout, R.drawable.ic_navigation_drawer, R.string.drawer_open_title, R.string.drawer_close_title ) { @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); if( getSupportActionBar() == null ) return; getSupportActionBar().setTitle( R.string.drawer_close_title ); invalidateOptionsMenu(); } @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); if( getSupportActionBar() == null ) return; getSupportActionBar().setTitle( R.string.drawer_open_title ); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } @Override public boolean onOptionsItemSelected(MenuItem item) { if( mDrawerToggle.onOptionsItemSelected( item ) ) return true; return super.onOptionsItemSelected(item); } @Override protected void onStart() { super.onStart(); mNavigationBus.register(this); } @Override protected void onStop() { mNavigationBus.unregister(this); super.onStop(); } @Subscribe public void onDrawerNavigationClickedEvent( DrawerNavigationItemClickedEvent event ) { if( !mCurFragmentTitle.equalsIgnoreCase(event.section) ) { if (getString(R.string.fragment_image).equalsIgnoreCase(event.section)) { getSupportFragmentManager().beginTransaction().replace(R.id.container, ImageFragment.getInstance()).commit(); } else if (getString(R.string.fragment_text).equalsIgnoreCase(event.section)) { getSupportFragmentManager().beginTransaction().replace(R.id.container, TextFragment.getInstance()).commit(); } else if (getString(R.string.fragment_number_list).equalsIgnoreCase(event.section)) { getSupportFragmentManager().beginTransaction().replace(R.id.container, NumberListFragment.getInstance()).commit(); } mCurFragmentTitle = event.section; } mDrawerLayout.closeDrawers(); } }