public
class
NavigationDrawerFragment
extends
Fragment {
private
static
final
String STATE_SELECTED_POSITION =
"selected_navigation_drawer_position"
;
private
static
final
String PREF_USER_LEARNED_DRAWER =
"navigation_drawer_learned"
;
private
NavigationDrawerCallbacks mCallbacks;
private
ActionBarDrawerToggle mDrawerToggle;
private
DrawerLayout mDrawerLayout;
private
ListView mDrawerListView;
private
View mFragmentContainerView;
private
ArrayList<NavigationDrawerItem> items;
private
int
mCurrentSelectedPosition =
0
;
private
boolean
mFromSavedInstanceState;
private
boolean
mUserLearnedDrawer;
private
void
selectItem(
int
position){
mCurrentSelectedPosition = position;
if
(mDrawerListView !=
null
) {
mDrawerListView.setItemChecked(position,
true
);
}
if
(mDrawerLayout !=
null
) {
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
if
(mCallbacks !=
null
) {
mCallbacks.onNavigationDrawerItemSelected(position);
}
}
public
void
setUp(
int
fragmentId, DrawerLayout drawerLayout, Toolbar toolbar){
mFragmentContainerView = getActivity().findViewById(fragmentId);
mDrawerLayout = drawerLayout;
mDrawerToggle =
new
ActionBarDrawerToggle(getActivity(), mDrawerLayout, toolbar, R.string.open_drawer,R.string.close_drawer){
@Override
public
void
onDrawerClosed(View drawerView) {
super
.onDrawerClosed(drawerView);
if
(!isAdded()){
return
;
}
getActivity().supportInvalidateOptionsMenu();
}
@Override
public
void
onDrawerOpened(View drawerView) {
super
.onDrawerOpened(drawerView);
if
(!isAdded()){
return
;
}
getActivity().supportInvalidateOptionsMenu();
}
};
mDrawerToggle.setDrawerIndicatorEnabled(
true
);
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
private
void
addNavList(
int
icon, String content){
items.add(
new
NavigationDrawerItem(icon, content));
}
public
ActionBarDrawerToggle getDrawerToggle(){
return
mDrawerToggle;
}
public
NavigationDrawerFragment() {
}
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER,
false
);
if
(savedInstanceState !=
null
) {
mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
mFromSavedInstanceState =
true
;
}
selectItem(mCurrentSelectedPosition);
}
@Override
public
void
onActivityCreated(Bundle savedInstanceState) {
super
.onActivityCreated(savedInstanceState);
setHasOptionsMenu(
true
);
}
@Override
public
View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mDrawerListView = (ListView)inflater.inflate(R.layout.fragment_navigation_drawer, container,
false
);
items =
new
ArrayList<NavigationDrawerItem>();
mDrawerListView.setOnItemClickListener(
new
AdapterView.OnItemClickListener() {
@Override
public
void
onItemClick(AdapterView<?> parent, View view,
int
position,
long
id) {
selectItem(position);
}
});
addNavList(R.mipmap.ic_launcher,
"***"
);
addNavList(R.mipmap.ic_launcher,
"***"
);
addNavList(R.mipmap.ic_launcher,
"***"
);
addNavList(R.mipmap.ic_launcher,
"***"
);
mDrawerListView.setAdapter(
new
NavigationDrawerAdapter(getActivity(), items, R.layout.item_drawer));
mDrawerListView.setItemChecked(mCurrentSelectedPosition,
true
);
return
mDrawerListView;
}