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;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
......@@ -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;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private static final String TAG = "MainActivity";
......@@ -64,6 +64,7 @@ public class MainActivity extends AppCompatActivity
SessionManager session;
NotificationsResponse notificationsResponse;
private boolean showNotifications = false;
FeedFragment feedFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -82,7 +83,7 @@ public class MainActivity extends AppCompatActivity
drawer.addDrawerListener(toggle);
toggle.syncState();
FeedFragment feedFragment = new FeedFragment();
feedFragment = new FeedFragment();
updateFragment(feedFragment);
fetchNotifications();
......@@ -158,6 +159,8 @@ public class MainActivity extends AppCompatActivity
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else if (feedFragment != null && feedFragment.isVisible()) {
finish();
} else {
super.onBackPressed();
}
......@@ -195,7 +198,7 @@ public class MainActivity extends AppCompatActivity
switch (id) {
case R.id.nav_feed:
FeedFragment feedFragment = new FeedFragment();
feedFragment = new FeedFragment();
updateFragment(feedFragment);
break;
case R.id.nav_my_events:
......@@ -257,14 +260,20 @@ public class MainActivity extends AppCompatActivity
return true;
}
private void updateFragment(Fragment fragment) {
Bundle bundle = new Bundle();
public void updateFragment(Fragment fragment) {
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"));
fragment.setArguments(bundle);
FragmentManager manager = getSupportFragmentManager();
if (fragment instanceof FeedFragment)
manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentTransaction transaction = manager.beginTransaction();
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) {
......
......@@ -11,6 +11,7 @@ import android.view.ViewGroup;
import android.widget.CalendarView;
import android.widget.Toast;
import in.ac.iitb.gymkhana.iitbapp.MainActivity;
import in.ac.iitb.gymkhana.iitbapp.R;
/**
......@@ -58,11 +59,7 @@ public class CalendarFragment extends Fragment {
@Override
public void onClick(View v) {
AddEventFragment addEventFragment = new AddEventFragment();
addEventFragment.setArguments(getArguments());
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
ft.replace(R.id.calendar_layout, addEventFragment);
ft.addToBackStack("addEvent");
ft.commit();
((MainActivity) getActivity()).updateFragment(addEventFragment);
}
});
return view;
......
......@@ -23,6 +23,7 @@ import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.Constants;
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.adapter.FeedAdapter;
import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface;
......@@ -72,10 +73,7 @@ public class FeedFragment extends Fragment {
bundle.putString(Constants.EVENT_JSON, eventJson);
EventFragment eventFragment = new EventFragment();
eventFragment.setArguments(bundle);
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.framelayout_for_fragment, eventFragment, eventFragment.getTag());
transaction.commit();
((MainActivity) getActivity()).updateFragment(eventFragment);
}
});
feedRecyclerView = (RecyclerView) getActivity().findViewById(R.id.feed_recycler_view);
......@@ -112,10 +110,7 @@ public class FeedFragment extends Fragment {
bundle.putString(Constants.EVENT_JSON, eventJson);
EventFragment eventFragment = new EventFragment();
eventFragment.setArguments(bundle);
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.framelayout_for_fragment, eventFragment, eventFragment.getTag());
transaction.commit();
((MainActivity) getActivity()).updateFragment(eventFragment);
}
});
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