Advertisement
Guest User

NavigationFragment.java

a guest
Mar 1st, 2015
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.14 KB | None | 0 0
  1. package com.Ramm;
  2.  
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.content.res.Configuration;
  6. import android.os.Bundle;
  7. import android.support.annotation.Nullable;
  8. import android.support.v4.app.Fragment;
  9. import android.support.v4.widget.DrawerLayout;
  10. import android.support.v7.app.ActionBarDrawerToggle;
  11. import android.support.v7.widget.LinearLayoutManager;
  12. import android.support.v7.widget.RecyclerView;
  13. import android.support.v7.widget.Toolbar;
  14. import android.view.LayoutInflater;
  15. import android.view.View;
  16. import android.view.ViewGroup;
  17.  
  18. import java.util.List;
  19.  
  20. public class NavDrawerFragment extends Fragment implements NavDrawerCallback {
  21.     private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
  22.    
  23.     private NavDrawerCallback mCallbacks;
  24.     private RecyclerView mDrawerList;
  25.     private View mFragmentContainerView;
  26.     private DrawerLayout mDrawerLayout;
  27.     private ActionBarDrawerToggle mActionBarDrawerToggle;
  28.     private boolean mUserLearnedDrawer;
  29.     private Context mPassedContext;
  30.     private boolean mFromSavedInstanceState;
  31.     private int mCurrentSelectedPosition;
  32.  
  33.  
  34.     @Nullable
  35.     @Override
  36.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  37.         View view = inflater.inflate(R.layout.drawer_fragment, container, false);
  38.         mDrawerList = (RecyclerView) view.findViewById(R.id.drawerList);
  39.         LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
  40.         layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
  41.         mDrawerList.setLayoutManager(layoutManager);
  42.         mDrawerList.setHasFixedSize(true);
  43.  
  44.         final List<NavItem> NavItems = Config.configuration();
  45.         NavDrawerAdapter adapter = new NavDrawerAdapter(NavItems, NavDrawerFragment.this);
  46.         adapter.setNavigationDrawerCallbacks(this);
  47.         mDrawerList.setAdapter(adapter);
  48.         selectItem(mCurrentSelectedPosition, Config.configuration().get(mCurrentSelectedPosition));
  49.         return view;
  50.     }
  51.  
  52.     @Override
  53.     public void onCreate(Bundle savedInstanceState) {
  54.         super.onCreate(savedInstanceState);
  55.         if (savedInstanceState != null) {
  56.             mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
  57.             mFromSavedInstanceState = true;
  58.         }
  59.     }
  60.  
  61.     @Override
  62.     public void onAttach(Activity activity) {
  63.         super.onAttach(activity);
  64.         try {
  65.             mCallbacks = (NavDrawerCallback) activity;
  66.         } catch (ClassCastException e) {
  67.             throw new ClassCastException("Activity must implement NavDrawerCallback.");
  68.         }
  69.     }
  70.  
  71.     public ActionBarDrawerToggle getActionBarDrawerToggle() {
  72.         return mActionBarDrawerToggle;
  73.     }
  74.  
  75.     public void setActionBarDrawerToggle(ActionBarDrawerToggle actionBarDrawerToggle) {
  76.         mActionBarDrawerToggle = actionBarDrawerToggle;
  77.     }
  78.  
  79.     public void setup(int fragmentId, DrawerLayout drawerLayout, Toolbar toolbar) {
  80.         mFragmentContainerView = getActivity().findViewById(fragmentId);
  81.         mDrawerLayout = drawerLayout;
  82.         mActionBarDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
  83.             @Override
  84.             public void onDrawerClosed(View drawerView) {
  85.                 super.onDrawerClosed(drawerView);
  86.                 if (!isAdded()) return;
  87.                 getActivity().invalidateOptionsMenu();
  88.             }
  89.  
  90.             @Override
  91.             public void onDrawerOpened(View drawerView) {
  92.                 super.onDrawerOpened(drawerView);
  93.                 if (!isAdded()) return;
  94.  
  95.                 getActivity().invalidateOptionsMenu();
  96.             }
  97.         };
  98.  
  99.         if (!mUserLearnedDrawer && !mFromSavedInstanceState)
  100.             mDrawerLayout.openDrawer(mFragmentContainerView);
  101.  
  102.         mDrawerLayout.post(new Runnable() {
  103.             @Override
  104.             public void run() {
  105.                 mActionBarDrawerToggle.syncState();
  106.             }
  107.         });
  108.  
  109.         mDrawerLayout.setDrawerListener(mActionBarDrawerToggle);
  110.     }
  111.  
  112.     public void openDrawer() {
  113.         mDrawerLayout.openDrawer(mFragmentContainerView);
  114.     }
  115.  
  116.     public void closeDrawer() {
  117.         mDrawerLayout.closeDrawer(mFragmentContainerView);
  118.     }
  119.  
  120.     @Override
  121.     public void onDetach() {
  122.         super.onDetach();
  123.         mCallbacks = null;
  124.     }
  125.  
  126.     void selectItem(int position, NavItem item) {
  127.         //If on start, item is section, change it.
  128.         if (item.getType() == NavItem.SECTION){
  129.             position = position + 1;
  130.             item = Config.configuration().get(position);
  131.         }
  132.        
  133.         mCurrentSelectedPosition = position;
  134.         if (mDrawerLayout != null) {
  135.             mDrawerLayout.closeDrawer(mFragmentContainerView);
  136.         }
  137.         if (mCallbacks != null) {
  138.             mCallbacks.onNavigationDrawerItemSelected(position, item);
  139.         }
  140.        
  141.         ((NavDrawerAdapter) mDrawerList.getAdapter()).selectPosition(position);
  142.     }
  143.  
  144.     public boolean isDrawerOpen() {
  145.         return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(mFragmentContainerView);
  146.     }
  147.  
  148.     @Override
  149.     public void onConfigurationChanged(Configuration newConfig) {
  150.         super.onConfigurationChanged(newConfig);
  151.         mActionBarDrawerToggle.onConfigurationChanged(newConfig);
  152.     }
  153.  
  154.     @Override
  155.     public void onSaveInstanceState(Bundle outState) {
  156.         super.onSaveInstanceState(outState);
  157.         outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition);
  158.     }
  159.  
  160.     @Override
  161.     public void onNavigationDrawerItemSelected(int position, NavItem item) {
  162.         //TODO we can also call this method here, but that won't set an initial item.
  163.         //mCallbacks.onNavigationDrawerItemSelected(position, item);
  164.         if (item.getType() != NavItem.SECTION){
  165.             selectItem(position, item);
  166.         }
  167.     }
  168.  
  169.     public DrawerLayout getDrawerLayout() {
  170.         return mDrawerLayout;
  171.     }
  172.  
  173.     public void setDrawerLayout(DrawerLayout drawerLayout) {
  174.         mDrawerLayout = drawerLayout;
  175.     }
  176.  
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement