Commit 7544ef74 authored by Sajal Narang's avatar Sajal Narang

Implement back navigation, fix #33

parent 1a14d32a
...@@ -16,6 +16,7 @@ import android.support.v4.widget.DrawerLayout; ...@@ -16,6 +16,7 @@ import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
...@@ -55,8 +56,7 @@ import static in.ac.iitb.gymkhana.iitbapp.Constants.RESULT_LOAD_IMAGE; ...@@ -55,8 +56,7 @@ import static in.ac.iitb.gymkhana.iitbapp.Constants.RESULT_LOAD_IMAGE;
import static in.ac.iitb.gymkhana.iitbapp.SessionManager.SESSION_ID; import static in.ac.iitb.gymkhana.iitbapp.SessionManager.SESSION_ID;
public class MainActivity extends AppCompatActivity public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
implements NavigationView.OnNavigationItemSelectedListener {
private static final String TAG = "MainActivity"; private static final String TAG = "MainActivity";
...@@ -64,6 +64,7 @@ public class MainActivity extends AppCompatActivity ...@@ -64,6 +64,7 @@ public class MainActivity extends AppCompatActivity
SessionManager session; SessionManager session;
NotificationsResponse notificationsResponse; NotificationsResponse notificationsResponse;
private boolean showNotifications = false; private boolean showNotifications = false;
FeedFragment feedFragment;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
...@@ -82,7 +83,7 @@ public class MainActivity extends AppCompatActivity ...@@ -82,7 +83,7 @@ public class MainActivity extends AppCompatActivity
drawer.addDrawerListener(toggle); drawer.addDrawerListener(toggle);
toggle.syncState(); toggle.syncState();
FeedFragment feedFragment = new FeedFragment(); feedFragment = new FeedFragment();
updateFragment(feedFragment); updateFragment(feedFragment);
fetchNotifications(); fetchNotifications();
...@@ -158,6 +159,8 @@ public class MainActivity extends AppCompatActivity ...@@ -158,6 +159,8 @@ public class MainActivity extends AppCompatActivity
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) { if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START); drawer.closeDrawer(GravityCompat.START);
} else if (feedFragment != null && feedFragment.isVisible()) {
finish();
} else { } else {
super.onBackPressed(); super.onBackPressed();
} }
...@@ -195,7 +198,7 @@ public class MainActivity extends AppCompatActivity ...@@ -195,7 +198,7 @@ public class MainActivity extends AppCompatActivity
switch (id) { switch (id) {
case R.id.nav_feed: case R.id.nav_feed:
FeedFragment feedFragment = new FeedFragment(); feedFragment = new FeedFragment();
updateFragment(feedFragment); updateFragment(feedFragment);
break; break;
case R.id.nav_my_events: case R.id.nav_my_events:
...@@ -257,14 +260,20 @@ public class MainActivity extends AppCompatActivity ...@@ -257,14 +260,20 @@ public class MainActivity extends AppCompatActivity
return true; return true;
} }
private void updateFragment(Fragment fragment) { public void updateFragment(Fragment fragment) {
Bundle bundle = new Bundle(); Log.d(TAG, "updateFragment: " + fragment.toString());
Bundle bundle = fragment.getArguments();
if (bundle == null) {
bundle = new Bundle();
}
bundle.putString(SESSION_ID, session.pref.getString(SESSION_ID, "Error")); bundle.putString(SESSION_ID, session.pref.getString(SESSION_ID, "Error"));
fragment.setArguments(bundle); fragment.setArguments(bundle);
FragmentManager manager = getSupportFragmentManager(); FragmentManager manager = getSupportFragmentManager();
if (fragment instanceof FeedFragment)
manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentTransaction transaction = manager.beginTransaction(); FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.framelayout_for_fragment, fragment, fragment.getTag()); transaction.replace(R.id.framelayout_for_fragment, fragment, fragment.getTag());
transaction.commit(); transaction.addToBackStack(fragment.getTag()).commit();
} }
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
......
...@@ -11,6 +11,7 @@ import android.view.ViewGroup; ...@@ -11,6 +11,7 @@ import android.view.ViewGroup;
import android.widget.CalendarView; import android.widget.CalendarView;
import android.widget.Toast; import android.widget.Toast;
import in.ac.iitb.gymkhana.iitbapp.MainActivity;
import in.ac.iitb.gymkhana.iitbapp.R; import in.ac.iitb.gymkhana.iitbapp.R;
/** /**
...@@ -58,11 +59,7 @@ public class CalendarFragment extends Fragment { ...@@ -58,11 +59,7 @@ public class CalendarFragment extends Fragment {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
AddEventFragment addEventFragment = new AddEventFragment(); AddEventFragment addEventFragment = new AddEventFragment();
addEventFragment.setArguments(getArguments()); ((MainActivity) getActivity()).updateFragment(addEventFragment);
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
ft.replace(R.id.calendar_layout, addEventFragment);
ft.addToBackStack("addEvent");
ft.commit();
} }
}); });
return view; return view;
......
...@@ -23,6 +23,7 @@ import java.util.List; ...@@ -23,6 +23,7 @@ import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.Constants; import in.ac.iitb.gymkhana.iitbapp.Constants;
import in.ac.iitb.gymkhana.iitbapp.ItemClickListener; import in.ac.iitb.gymkhana.iitbapp.ItemClickListener;
import in.ac.iitb.gymkhana.iitbapp.MainActivity;
import in.ac.iitb.gymkhana.iitbapp.R; import in.ac.iitb.gymkhana.iitbapp.R;
import in.ac.iitb.gymkhana.iitbapp.adapter.FeedAdapter; import in.ac.iitb.gymkhana.iitbapp.adapter.FeedAdapter;
import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface; import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface;
...@@ -72,10 +73,7 @@ public class FeedFragment extends Fragment { ...@@ -72,10 +73,7 @@ public class FeedFragment extends Fragment {
bundle.putString(Constants.EVENT_JSON, eventJson); bundle.putString(Constants.EVENT_JSON, eventJson);
EventFragment eventFragment = new EventFragment(); EventFragment eventFragment = new EventFragment();
eventFragment.setArguments(bundle); eventFragment.setArguments(bundle);
FragmentManager manager = getActivity().getSupportFragmentManager(); ((MainActivity) getActivity()).updateFragment(eventFragment);
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.framelayout_for_fragment, eventFragment, eventFragment.getTag());
transaction.commit();
} }
}); });
feedRecyclerView = (RecyclerView) getActivity().findViewById(R.id.feed_recycler_view); feedRecyclerView = (RecyclerView) getActivity().findViewById(R.id.feed_recycler_view);
...@@ -112,10 +110,7 @@ public class FeedFragment extends Fragment { ...@@ -112,10 +110,7 @@ public class FeedFragment extends Fragment {
bundle.putString(Constants.EVENT_JSON, eventJson); bundle.putString(Constants.EVENT_JSON, eventJson);
EventFragment eventFragment = new EventFragment(); EventFragment eventFragment = new EventFragment();
eventFragment.setArguments(bundle); eventFragment.setArguments(bundle);
FragmentManager manager = getActivity().getSupportFragmentManager(); ((MainActivity) getActivity()).updateFragment(eventFragment);
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.framelayout_for_fragment, eventFragment, eventFragment.getTag());
transaction.commit();
} }
}); });
feedRecyclerView = (RecyclerView) getActivity().findViewById(R.id.feed_recycler_view); feedRecyclerView = (RecyclerView) getActivity().findViewById(R.id.feed_recycler_view);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment