Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////
- // MainActivity (simplified class)
- //////////////////////////////////////////////
- public class MainActivity extends ActionBarActivity {
- private NavigationDrawerFragment mNavigationDrawerFragment;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mNavigationDrawerFragment = (NavigationDrawerFragment)
- getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
- mTitle = getTitle();
- // Set up the drawer.
- mNavigationDrawerFragment.setUp(
- R.id.navigation_drawer,
- (DrawerLayout) findViewById(R.id.drawer_layout));
- // Show content for the first menu item
- // when the app launches.
- if (savedInstanceState == null) {
- showContentForNavigationDrawerItem(0);
- }
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // ActionBarDrawerToggle drawerToggle = mNavigationDrawerFragment.getDrawerToggle();
- // if (drawerToggle.isDrawerIndicatorEnabled() &&
- // drawerToggle.onOptionsItemSelected(item)) {
- // return true;
- // }
- switch (item.getItemId()) {
- case android.R.id.home:
- FragmentManager fragmentManager = getSupportFragmentManager();
- fragmentManager.popBackStack();
- fragmentManager.executePendingTransactions();
- mNavigationDrawerFragment.toggleDrawerIndicator();
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
- @Override
- public void onBackPressed() {
- FragmentManager fragmentManager = getSupportFragmentManager();
- fragmentManager.executePendingTransactions();
- if (fragmentManager.getBackStackEntryCount() < 1) {
- super.onBackPressed();
- } else {
- fragmentManager.executePendingTransactions();
- fragmentManager.popBackStack();
- fragmentManager.executePendingTransactions();
- mNavigationDrawerFragment.toggleDrawerIndicator();
- }
- }
- }
- //////////////////////////////////////////////
- // NavigationDrawerFragment (simplified class)
- //////////////////////////////////////////////
- public class NavigationDrawerFragment extends Fragment {
- private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
- private ActionBarDrawerToggle mDrawerToggle;
- private DrawerLayout mDrawerLayout;
- private ListView mDrawerListView;
- private View mFragmentContainerView;
- private int mCurrentSelectedPosition = 0;
- private boolean mFromSavedInstanceState;
- private boolean mUserLearnedDrawer;
- public NavigationDrawerFragment() {
- }
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
- @Override
- public void onBackStackChanged() {
- toggleDrawerIndicator();
- }
- });
- mUserLearnedDrawer = mPreferenceHelper.restoreUserLearnedDrawer();
- if (savedInstanceState != null) {
- mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
- mFromSavedInstanceState = true;
- }
- }
- public void toggleDrawerIndicator() {
- int backStackCount = getFragmentManager().getBackStackEntryCount();
- boolean enableIndicator = backStackCount == 0;
- mDrawerToggle.setDrawerIndicatorEnabled(enableIndicator);
- }
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- setHasOptionsMenu(true);
- }
- public boolean isDrawerOpen() {
- return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(mFragmentContainerView);
- }
- public void setUp(int fragmentId, DrawerLayout drawerLayout) {
- mFragmentContainerView = getActivity().findViewById(fragmentId);
- mDrawerLayout = drawerLayout;
- mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
- ActionBar actionBar = getActionBar();
- actionBar.setDisplayHomeAsUpEnabled(true);
- actionBar.setHomeButtonEnabled(true);
- mDrawerToggle = new ActionBarDrawerToggle(
- getActivity(), /* host Activity */
- mDrawerLayout, /* DrawerLayout object */
- R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
- R.string.navigation_drawer_open, /* "open drawer" description for accessibility */
- R.string.navigation_drawer_close /* "close drawer" description for accessibility */
- ) {
- @Override
- public void onDrawerClosed(View drawerView) {
- super.onDrawerClosed(drawerView);
- if (!isAdded()) {
- return;
- }
- toggleDrawerIndicator();
- getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu()
- }
- @Override
- public void onDrawerOpened(View drawerView) {
- super.onDrawerOpened(drawerView);
- if (!isAdded()) {
- return;
- }
- mDrawerToggle.setDrawerIndicatorEnabled(true);
- if (!mUserLearnedDrawer) {
- // The user manually opened the drawer;
- // store this flag to prevent auto-showing
- // the navigation drawer automatically in the future.
- mUserLearnedDrawer = true;
- mPreferenceHelper.storeUserLearnedDrawer(true);
- }
- getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu()
- }
- };
- // If the user hasn't 'learned' about the drawer, open it to introduce them to the drawer,
- // per the navigation drawer design guidelines.
- if (!mUserLearnedDrawer && !mFromSavedInstanceState) {
- mDrawerLayout.openDrawer(mFragmentContainerView);
- }
- // Defer code dependent on restoration of previous instance state.
- mDrawerLayout.post(new Runnable() {
- @Override
- public void run() {
- mDrawerToggle.syncState();
- }
- });
- mDrawerLayout.setDrawerListener(mDrawerToggle);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement