I have login Activity and three fragment namely loader,homePage,take attendance.Now when I am in homePage I want that my app get exit by tapping backpressed.I have successfully acheived my goal but the double backpressed is also applied in the take attendance fragment which I don't want.In take attendance fragment on clicking backpressed it should just go to the previous fragment but it is not happening.
Here is my code:-
MainActivity.java
@Override
public void onBackPressed() {
//for(int i=0;i<getFragmentManager().getBackStackEntryCount();i++)
Home_Screen home_screen = (Home_Screen) getFragmentManager().findFragmentByTag
("Home_Screen_Teacher");
if (home_screen != null && home_screen.isVisible()) {
DrawerLayout navigation_drawer = home_screen.getView().findViewById(R.id.drawer_layout);
if (navigation_drawer.isDrawerOpen(GravityCompat.START)) {
navigation_drawer.closeDrawer(Gravity.LEFT);
}
else {
if (backpressedTime + 2000 > System.currentTimeMillis()) {
this.finish();
System.exit(0);
return;
}
else {
second=(int)(backpressedTime/1000);
Snackbar.make(findViewById(R.id.home_screen_teacher),"Detach",Snackbar.LENGTH_LONG).show();
}
backpressedTime = System.currentTimeMillis();
//super.onBackPressed();
}
}
else{
super.onBackPressed();
}
}
Loader fragment.java
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View loadder_fragment=inflater.inflate(R.layout.fragment_loader_fragment, container, false);
Loader=(AVLoadingIndicatorView)loadder_fragment.findViewById(R.id.loder_login);
handler=new Handler();
runnable=new Runnable() {
@Override
public void run() {
Loader.setVisibility(View.INVISIBLE);
timer.cancel();
fragmentManager=getFragmentManager();
fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator
.slide_out_left,R.animator.slide_in_right,R.animator.slide_out_right);
Home_Screen home_screen=new Home_Screen();
fragmentTransaction.replace(R.id.Home_screen_fragment_3,home_screen,
"Home_Screen_Teacher");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
};
timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(runnable);
}
}, 5000,5000);
return loadder_fragment;
}
Home_Screen fragmnent.java
navigation_drawer=(DrawerLayout)Home_screen.findViewById(R.id.drawer_layout);
navigationView=(NavigationView)Home_screen.findViewById(R.id.Navigation_view_for_teacher);
home_screen_take_attendance_button=(Button)Home_screen.findViewById(R.id
.home_screen_take_attendance_button);
home_screen_take_attendance_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().getFragmentManager().beginTransaction().replace(R.id
.fragment_take_attendance,new Take_attendance(),"take_attendence")
.addToBackStack(null).commit();
}
});
Take_attendance fragment.java
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fragmentManager=getFragmentManager();
fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator .slide_out_left,R.animator.slide_in_right,R.animator.slide_out_right);
Home_Screen home_screen=new Home_Screen(); fragmentTransaction.replace(R.id.Home_screen_fragment1,home_screen,"Home_Screen_Teacher");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
//Some code
Please help.I am stuck in this problem for the past two days.I have achieved my goals but the double backpressed to exit the app is also working in the take attendance fragment which I do not want it.