PialKanti

MainActivity

Jan 27th, 2016
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.97 KB | None | 0 0
  1. package com.example.pial_pc.instantbookreview;
  2.  
  3. import android.support.v4.app.Fragment;
  4. import android.support.v4.app.FragmentManager;
  5. import android.content.res.Configuration;
  6. import android.content.res.TypedArray;
  7. import android.support.v4.app.ActionBarDrawerToggle;
  8. import android.support.v4.app.FragmentTransaction;
  9. import android.support.v4.widget.DrawerLayout;
  10. import android.support.v7.app.ActionBarActivity;
  11. import android.os.Bundle;
  12. import android.util.Log;
  13. import android.view.Menu;
  14. import android.view.MenuItem;
  15. import android.view.View;
  16. import android.widget.AdapterView;
  17. import android.widget.ListView;
  18.  
  19. import java.util.ArrayList;
  20.  
  21.  
  22. public class MainActivity extends ActionBarActivity {
  23.  
  24. private DrawerLayout mDrawerLayout;
  25. private ListView mDrawerList;
  26. private ActionBarDrawerToggle mDrawerToggle;
  27.  
  28. // nav drawer title
  29. private CharSequence mDrawerTitle;
  30.  
  31. // used to store app title
  32. private CharSequence mTitle;
  33.  
  34. // slide menu items
  35. private String[] navMenuTitles;
  36. private TypedArray navMenuIcons;
  37.  
  38. private ArrayList<NavDrawerItem> navDrawerItems;
  39. private NavDrawerListAdapter adapter;
  40.  
  41. @Override
  42. protected void onCreate(Bundle savedInstanceState) {
  43. super.onCreate(savedInstanceState);
  44. setContentView(R.layout.activity_main);
  45.  
  46. mTitle = mDrawerTitle = getTitle();
  47.  
  48. // load slide menu items
  49. navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
  50.  
  51. // nav drawer icons from resources
  52. navMenuIcons = getResources()
  53. .obtainTypedArray(R.array.nav_drawer_icons);
  54.  
  55. mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
  56. mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
  57.  
  58.  
  59. navDrawerItems = new ArrayList<NavDrawerItem>();
  60.  
  61. // adding nav drawer items to array
  62. // Home
  63. navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
  64. // Search book by title
  65. navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
  66. // Maps
  67. navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
  68. // Settings
  69. navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1)));
  70. // About Us
  71. navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));
  72.  
  73.  
  74. // Recycle the typed array
  75. navMenuIcons.recycle();
  76.  
  77. mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
  78.  
  79. // setting the nav drawer list adapter
  80. adapter = new NavDrawerListAdapter(getApplicationContext(),
  81. navDrawerItems);
  82. mDrawerList.setAdapter(adapter);
  83.  
  84. // enabling action bar app icon and behaving it as toggle button
  85. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  86. getSupportActionBar().setHomeButtonEnabled(true);
  87. getSupportActionBar().setHomeAsUpIndicator(R.mipmap.ic_drawer);
  88.  
  89. mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
  90. R.mipmap.ic_drawer, //nav menu toggle icon
  91. R.string.app_name, // nav drawer open - description for accessibility
  92. R.string.app_name // nav drawer close - description for accessibility
  93. ) {
  94. public void onDrawerClosed(View view) {
  95. /* getActionBar().setTitle(mTitle);*/
  96. // calling onPrepareOptionsMenu() to show action bar icons
  97. invalidateOptionsMenu();
  98. }
  99.  
  100. public void onDrawerOpened(View drawerView) {
  101. /*getActionBar().setTitle(mDrawerTitle);*/
  102. // calling onPrepareOptionsMenu() to hide action bar icons
  103. invalidateOptionsMenu();
  104. }
  105. };
  106. mDrawerLayout.setDrawerListener(mDrawerToggle);
  107.  
  108. if (savedInstanceState == null) {
  109. // on first time display view for first nav item
  110. displayView(0);
  111. }
  112. }
  113.  
  114. /**
  115. * Slide menu item click listener
  116. * */
  117. private class SlideMenuClickListener implements
  118. ListView.OnItemClickListener {
  119. @Override
  120. public void onItemClick(AdapterView<?> parent, View view, int position,
  121. long id) {
  122. // display view for selected nav drawer item
  123. displayView(position);
  124. }
  125. }
  126.  
  127. @Override
  128. public boolean onCreateOptionsMenu(Menu menu) {
  129. getMenuInflater().inflate(R.menu.menu_main, menu);
  130. return true;
  131. }
  132.  
  133. @Override
  134. public boolean onOptionsItemSelected(MenuItem item) {
  135. // toggle nav drawer on selecting action bar app icon/title
  136. if (mDrawerToggle.onOptionsItemSelected(item)) {
  137. return true;
  138. }
  139. // Handle action bar actions click
  140. switch (item.getItemId()) {
  141. case R.id.action_settings:
  142. return true;
  143. default:
  144. return super.onOptionsItemSelected(item);
  145. }
  146. }
  147.  
  148. /***
  149. * Called when invalidateOptionsMenu() is triggered
  150. */
  151. @Override
  152. public boolean onPrepareOptionsMenu(Menu menu) {
  153. // if nav drawer is opened, hide the action items
  154. boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
  155. menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
  156. return super.onPrepareOptionsMenu(menu);
  157. }
  158.  
  159. /**
  160. * Diplaying fragment view for selected nav drawer list item
  161. * */
  162. private void displayView(int position) {
  163. // update the main content by replacing fragments
  164. Fragment fragment = null;
  165. switch (position) {
  166. case 0:
  167. fragment = new HomeFragment();
  168. break;
  169. case 1:
  170. fragment = new SearchTitleFragment();
  171. break;
  172. /* case 2:
  173. fragment = new PhotosFragment();
  174. break;
  175. case 3:
  176. fragment = new CommunityFragment();
  177. break;
  178. case 4:
  179. fragment = new PagesFragment();
  180. break;
  181. case 5:
  182. fragment = new WhatsHotFragment();
  183. break;
  184. */
  185. default:
  186. break;
  187. }
  188.  
  189. if (fragment != null) {
  190. FragmentManager fragmentManager = getSupportFragmentManager();
  191. FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
  192. fragmentTransaction.replace(R.id.frame_container, fragment);
  193. fragmentTransaction.addToBackStack(null);
  194. fragmentTransaction.commit();
  195.  
  196. // update selected item and title, then close the drawer
  197. mDrawerList.setItemChecked(position, true);
  198. mDrawerList.setSelection(position);
  199. setTitle(navMenuTitles[position]);
  200. mDrawerLayout.closeDrawer(mDrawerList);
  201. } else {
  202. // error in creating fragment
  203. Log.e("MainActivity", "Error in creating fragment");
  204. }
  205. }
  206.  
  207. @Override
  208. public void setTitle(CharSequence title) {
  209. mTitle = title;
  210. getSupportActionBar().setTitle(mTitle);
  211. }
  212.  
  213. /**
  214. * When using the ActionBarDrawerToggle, you must call it during
  215. * onPostCreate() and onConfigurationChanged()...
  216. */
  217.  
  218. @Override
  219. protected void onPostCreate(Bundle savedInstanceState) {
  220. super.onPostCreate(savedInstanceState);
  221. // Sync the toggle state after onRestoreInstanceState has occurred.
  222. mDrawerToggle.syncState();
  223. }
  224.  
  225. @Override
  226. public void onConfigurationChanged(Configuration newConfig) {
  227. super.onConfigurationChanged(newConfig);
  228. // Pass any configuration change to the drawer toggls
  229. mDrawerToggle.onConfigurationChanged(newConfig);
  230. }
  231. }
Advertisement
Add Comment
Please, Sign In to add comment