Good morning.
I have a Activity
that is a DrawerMenu
(side menu), from which I make calls to different fragments, the problem I have is that when I access a Fragment
and turn the device, it closes the Fragment
and return me to the main activity. How could I solve this situation? Thank you in advance.
This is the activity of the drawer menu (lateral menu):
public class LeftMenuActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener ,SimpleDialog.OnSimpleDialogListener{
private TextView lblUserN;
private TextView userEmail;
private LinearLayout linearMenuLeft;
private NavigationView navigationView;
private Menu menuNav;
private Global global;
private int totalFacilitiesFavorites;
private ArrayList<Facility> facilitiesFavorites;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_left_menu);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
global = new Global();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
//seleccionamos por defecto la primera opcion del menu
navigationView.getMenu().getItem(0).setChecked(true);
onNavigationItemSelected(navigationView.getMenu().getItem(0));
View header=navigationView.getHeaderView(0);
lblUserN =(TextView) header.findViewById(R.id.lblUserN);
userEmail =(TextView) header.findViewById(R.id.userEmail);
linearMenuLeft =(LinearLayout) header.findViewById(R.id.linearMenuLeft);
//recuperar datos de session
SharedPreferences prefs = this.getSharedPreferences("login_data", Context.MODE_PRIVATE);
String realName = prefs.getString("realName", "");
String profilePicture = prefs.getString("profilePicture", "");
String email = prefs.getString("email", "");
menuNav = navigationView.getMenu();
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
}
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
} else {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
}else{
super.onBackPressed();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
FragmentManager fragmentManager = getSupportFragmentManager();
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.searchItem) {
closeOtherFragments();
fragmentManager.beginTransaction().replace(R.id.content_frame,new SearchFragment()).commit();
} else if (id == R.id.loginItem) {
closeOtherFragments();
getSupportFragmentManager().beginTransaction().replace(R.id.content_login,new LoginFragment()).commit();
} else if (id == R.id.logout) {
//destruimos los datos de la session
destroySession();
MenuItem loginItemMenu = menuNav.findItem(R.id.loginItem);
loginItemMenu.setVisible(true);
//refrescamos la activity actual
global.refreshActualActivity(this);
} else if (id == R.id.reviewsItem) {
closeOtherFragments();
getSupportFragmentManager().beginTransaction().replace(R.id.content_facility_reviews,new UserReviewsFragment()).commit();
} else if (id == R.id.favoritesItem) {
closeOtherFragments();
getSupportFragmentManager().beginTransaction().replace(R.id.content_facility_favorite,new FacilityFavoriteFragment()).commit();
}
else if (id == R.id.toursItem) {
closeOtherFragments();
getSupportFragmentManager().beginTransaction().replace(R.id.content_facility_tours,new FacililityToursFragment()).commit();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onPossitiveButtonClick() {
}
@Override
public void onNegativeButtonClick() {
}
}
Turning the device I noticed that the oncreate
of this Activity
is executed again.