2929import android .os .Handler ;
3030import android .support .v4 .app .Fragment ;
3131import android .support .v4 .widget .DrawerLayout ;
32- import android .support .v7 .app .ActionBar ;
3332import android .support .v7 .app .ActionBarActivity ;
3433import android .support .v7 .app .ActionBarDrawerToggle ;
3534import android .util .Log ;
@@ -70,31 +69,22 @@ public class MainActivity extends ActionBarActivity {
7069
7170 private static final String TAG = MainActivity .class .getSimpleName ();
7271 public static boolean backPressed = false ;
73- public static ArrayList <Fragment > fragments ;
7472 private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver () {
7573 @ Override
7674 public void onReceive (Context context , Intent intent ) {
7775 String newMessage = intent .getExtras ().getString (EXTRA_MESSAGE );
78- // Waking up mobile if it is sleeping
7976 WakeLocker .acquire (getApplicationContext ());
80- /**
81- * Take appropriate action on this message
82- * depending upon your app requirement
83- * For now i am just displaying it on the screen
84- * */
8577 Toast .makeText (getApplicationContext (), "New Message: " + newMessage , Toast .LENGTH_LONG ).show ();
86- // Releasing wake lock
8778 WakeLocker .release ();
8879 }
8980 };
90- public ActionBar act ;
91- public Fragment mContent ;
92- public int prevPos = 0 ;
93- protected DrawerSlideListeners mDrawerSlideListeners ;
9481 DrawerLayout mDrawerLayout ;
9582 ListView mDrawerListView ;
9683 ActionBarDrawerToggle mActionBarDrawerToggle ;
9784 AsyncTask <Void , Void , Void > mRegisterTask ;
85+ private Fragment mContent ;
86+ private int prevPos = 0 ;
87+ private DrawerSlideListeners mDrawerSlideListeners ;
9888 private SlideMenuAdapter listAdapter ;
9989 private List <Item > slideItems ;
10090
@@ -103,7 +93,6 @@ protected void onCreate(Bundle savedInstanceState) {
10393
10494 super .onCreate (savedInstanceState );
10595 setContentView (R .layout .activity_main );
106- act = getSupportActionBar ();
10796 if (savedInstanceState != null ) {
10897 mContent = getSupportFragmentManager ().getFragment (
10998 savedInstanceState , "mContent" );
@@ -113,15 +102,15 @@ protected void onCreate(Bundle savedInstanceState) {
113102 registerReceiver (mHandleMessageReceiver , new IntentFilter (
114103 CommonUtilities .DISPLAY_MESSAGE_ACTION ));
115104 final String regId = GCMRegistrar .getRegistrationId (this );
116- Log .e (TAG , regId + " here" );
105+ Log .e (TAG , "GCM ID for this mobile-" + regId );
117106 if (regId .equals ("" )) {
118107 // Registration is not present, register now with GCM
119108 GCMRegistrar .register (this , SENDER_ID );
120109 Toast .makeText (this , "" + GCMRegistrar .getRegistrationId (this ), Toast .LENGTH_LONG ).show ();
121110 } else {
122111 if (GCMRegistrar .isRegisteredOnServer (this )) {
123112 // Skips registration.
124- Toast . makeText ( getApplicationContext () , "Already registered with GCM" , Toast . LENGTH_LONG ). show ( );
113+ Log . i ( TAG , "GCM Registration message" + " Already registered with GCM" );
125114 } else {
126115 // Try to register again, but not in the UI thread.
127116 // It's also necessary to cancel the thread onDestroy(),
@@ -145,25 +134,19 @@ protected Void doInBackground(Void... params) {
145134 protected void onPostExecute (Void result ) {
146135 mRegisterTask = null ;
147136 }
148-
149137 };
150138 mRegisterTask .execute (null , null , null );
151139 }
152140 }
153141 if (mContent == null ) {
154- fragments = new ArrayList <Fragment >();
155- fragments .add (new FeedFragment ());
156- fragments .add (new RequestFragment ());
157- fragments .add (new ProfileDetailsFragment ());
158- mContent = fragments .get (0 );
142+ mContent = new FeedFragment ();
159143 }
160144 mDrawerListView = (ListView ) findViewById (R .id .list_slidermenu );
161- slideItems = new ArrayList <Item >();
162-
145+ createSlidingMenu ();
163146 listAdapter = new SlideMenuAdapter (this , slideItems );
164147 mDrawerListView .setAdapter (listAdapter );
165148 if (mContent instanceof RequestFragment ) {
166- mDrawerSlideListeners = (DrawerSlideListeners ) fragments . get ( 1 ) ;
149+ mDrawerSlideListeners = (DrawerSlideListeners ) mContent ;
167150 }
168151 mDrawerLayout = (DrawerLayout ) findViewById (R .id .drawer_layout );
169152 mActionBarDrawerToggle = new ActionBarDrawerToggle (this , mDrawerLayout ,
@@ -182,19 +165,35 @@ public void onDrawerClosed(View drawerView) {
182165 public void onDrawerSlide (View drawerView , float slideOffset ) {
183166 super .onDrawerSlide (drawerView , slideOffset );
184167 if (mContent instanceof RequestFragment ) {
185- (( DrawerSlideListeners ) mContent ) .onDrawerSlide (slideOffset );
168+ mDrawerSlideListeners .onDrawerSlide (slideOffset );
186169 }
187170 Log .d (TAG , "" + slideOffset );
188171 }
189172 };
173+ mDrawerLayout .setDrawerListener (mActionBarDrawerToggle );
174+ mDrawerListView .setOnItemClickListener (new ListItemListner ());
175+ listAdapter .notifyDataSetInvalidated ();
176+ getSupportFragmentManager ().beginTransaction ()
177+ .replace (R .id .frame_container , mContent ).commit ();
178+ if (mContent instanceof FeedFragment ) {
179+ listAdapter .setSelected (0 );
180+ prevPos = 0 ;
181+ } else if (mContent instanceof RequestFragment ) {
182+ mDrawerSlideListeners = (DrawerSlideListeners ) mContent ;
183+ listAdapter .setSelected (1 );
184+ prevPos = 1 ;
185+ }
186+ }
187+
188+ private void createSlidingMenu () {
189+ slideItems = new ArrayList <Item >();
190190 String [] names = getResources ()
191191 .getStringArray (R .array .nav_drawer_items );
192192 TypedArray icons = getResources ().obtainTypedArray (
193193 R .array .nav_drawer_icons );
194194 TypedArray backgrounds = getResources ().obtainTypedArray (
195195 R .array .nav_drawer_backgrounds );
196196
197- mDrawerLayout .setDrawerListener (mActionBarDrawerToggle );
198197
199198 SlideItem item ;
200199 for (int i = 0 ; i < names .length ; i ++) {
@@ -207,18 +206,6 @@ public void onDrawerSlide(View drawerView, float slideOffset) {
207206 }
208207 icons .recycle ();
209208 backgrounds .recycle ();
210- mDrawerListView .setOnItemClickListener (new ListItemListner ());
211- listAdapter .notifyDataSetInvalidated ();
212- getSupportFragmentManager ().beginTransaction ()
213- .replace (R .id .frame_container , mContent ).commit ();
214- if (mContent instanceof FeedFragment ) {
215- listAdapter .setSelected (0 );
216- prevPos = 0 ;
217- } else if (mContent instanceof RequestFragment ) {
218- mDrawerSlideListeners = (DrawerSlideListeners ) fragments .get (1 );
219- listAdapter .setSelected (1 );
220- prevPos = 1 ;
221- }
222209 }
223210
224211 @ Override
@@ -271,7 +258,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
271258 if (id == R .id .action_logout ) {
272259 final ProgressDialog pd = new ProgressDialog (this );
273260 pd .setCancelable (true );
274- pd .setTitle ("Logging out." );
261+ pd .setTitle (getString ( R . string . log_out_message ) );
275262 pd .show ();
276263 deleteFile ("feed.json" );
277264 final ConnectionManager con = new ConnectionManager (this );
@@ -292,7 +279,7 @@ protected Void doInBackground(Void... params) {
292279 @ Override
293280 protected void onPostExecute (Void aVoid ) {
294281 if (!con .isConnectingToInternet ()) {
295- Toast .makeText (MainActivity .this , "Check Your internet Connection" , Toast .LENGTH_LONG ).show ();
282+ Toast .makeText (MainActivity .this , R . string . no_internet , Toast .LENGTH_LONG ).show ();
296283 return ;
297284 }
298285 for (UserInfoItem i : items ) {
@@ -337,15 +324,14 @@ public void onBackPressed() {
337324 finish ();
338325 AppController .getInstance ().getRequestQueue ().getCache ()
339326 .remove (URL .URL );
327+ backPressed = false ;
340328 MainActivity .this .overridePendingTransition (R .anim .slide_in_left ,
341329 R .anim .slide_out_right );
342- backPressed = false ;
343330 FeedFragment .firstTime = true ;
344331 finish ();
345- super .onBackPressed ();
346332 } else {
347333
348- Toast .makeText (this , "Press Back again to Exit" , Toast .LENGTH_SHORT )
334+ Toast .makeText (this , R . string . exit_notice , Toast .LENGTH_SHORT )
349335 .show ();
350336 backPressed = true ;
351337 Handler h = new Handler ();
@@ -360,11 +346,11 @@ public void run() {
360346 public void switchContent () {
361347 prevPos = 1 ;
362348 listAdapter .setSelected (1 );
363- mContent = fragments . get ( 1 );
349+ mContent = new RequestFragment ( );
364350 mDrawerListView .setItemChecked (1 , true );
365351 mDrawerListView .setSelection (1 );
366352 mDrawerLayout .closeDrawer (mDrawerListView );
367- mDrawerSlideListeners = (DrawerSlideListeners ) fragments . get ( 1 ) ;
353+ mDrawerSlideListeners = (DrawerSlideListeners ) mContent ;
368354 getSupportFragmentManager ().beginTransaction ()
369355 .setCustomAnimations (R .anim .grow , R .anim .dim )
370356 .replace (R .id .frame_container , mContent ).commit ();
@@ -379,46 +365,48 @@ public void switchContent(int pos) {
379365 return ;
380366 }
381367 if ((mContent instanceof RequestFragment )
382- && (fragments . get ( pos ) instanceof RequestFragment )) {
383- Toast . makeText ( this , "returned" , Toast . LENGTH_SHORT ). show ( );
368+ && (pos == 1 )) {
369+ Log . i ( TAG , "Fragment Change" + "returned to previous fragment without create a new one" );
384370 mDrawerLayout .closeDrawer (mDrawerListView );
385371 return ;
386372 } else if ((mContent instanceof FeedFragment )
387- && (fragments . get ( pos ) instanceof FeedFragment )) {
388- Toast . makeText ( this , "returned" , Toast . LENGTH_SHORT ). show ( );
373+ && (pos == 0 )) {
374+ Log . i ( TAG , "Fragment Change" + "returned to previous fragment without create a new one" );
389375 mDrawerLayout .closeDrawer (mDrawerListView );
390376 return ;
391377 } else if ((mContent instanceof ProfileDetailsFragment )
392- && (fragments . get ( pos ) instanceof ProfileDetailsFragment )) {
393- Toast . makeText ( this , "returned" , Toast . LENGTH_SHORT ). show ( );
378+ && (pos == 2 )) {
379+ Log . i ( TAG , "Fragment Change" + "returned to previous fragment without create a new one" );
394380 mDrawerLayout .closeDrawer (mDrawerListView );
395381 return ;
396382 }
397383 FeedFragment .slideChange = true ;
398- if (pos == 1 ) {
399- mDrawerSlideListeners = (DrawerSlideListeners ) fragments .get (1 );
384+ if (pos == 0 ) {
385+ mContent = new FeedFragment ();
386+ } else if (pos == 1 ) {
387+ mContent = new RequestFragment ();
388+ mDrawerSlideListeners = (DrawerSlideListeners ) mContent ;
389+ } else if (pos == 2 ) {
390+ mContent = new ProfileDetailsFragment ();
400391 }
401- getSupportFragmentManager ()
402- .beginTransaction ()
403- .setCustomAnimations (R .anim .slide_in_left ,
404- R .anim .slide_out_right )
405- .replace (R .id .frame_container , fragments .get (pos )).commit ();
406- mContent = fragments .get (pos );
392+ getSupportFragmentManager ().beginTransaction ()
393+ .setCustomAnimations (R .anim .slide_in_left , R .anim .slide_out_right )
394+ .replace (R .id .frame_container , mContent ).commit ();
407395 mDrawerListView .setItemChecked (pos , true );
408396 mDrawerListView .setSelection (pos );
409397 mDrawerLayout .closeDrawer (mDrawerListView );
410398 }
411399
412- public interface DrawerSlideListeners {
413- public void onDrawerSlide (float offset );
414- }
415-
416400 @ Override
417401 protected void onPause () {
418402 AppController .getInstance ().cancelPendingRequests ();
419403 super .onPause ();
420404 }
421405
406+ public interface DrawerSlideListeners {
407+ public void onDrawerSlide (float offset );
408+ }
409+
422410 private class ListItemListner implements ListView .OnItemClickListener {
423411
424412 @ Override
@@ -428,6 +416,7 @@ public void onItemClick(AdapterView<?> parent, View view, int position,
428416 if (position == 4 ) {
429417 Intent intent =
430418 new Intent (MainActivity .this , SettingsActivity .class );
419+ finish ();
431420 startActivity (intent );
432421 mDrawerLayout .closeDrawer (mDrawerListView );
433422 return ;
0 commit comments