Ich benutze Navigation Schublade in meiner App, jedes Element in der Schublade startet ein Fragment. Wenn ein Fragment angezeigt wird und die Zurück-Schaltfläche gedrückt wird, möchte ich, dass die Aktivität das erste Fragment startet.Wie gehe ich glatt zum ersten Fragment auf Backpress
Um expatiate, Wenn ich AbtFragment oder ContaFragment betrachtend bin und die Zurück-Taste gedrückt wird, möchte ich die Tätigkeit HomeFragment zu starten oder gehen Sie zurück.
Teil meiner Tätigkeit
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
id = item.getItemId();
Fragment fragment = null;
if (id == R.id.menu_home) {
fragment = new HomeFragment();
}
if (id == R.id.about_blog) {
fragment = new AbtFragment();
} else if (id == R.id.nav_contri) {
fragment = new ContFragment();
} else if (id == R.id.nav_contact) {
fragment = new ContaFragment();
} else if (id == R.id.nav_privy) {
fragment = new PageFragment();
} else if (id == R.id.nav_advert) {
fragment = new PageFragment();
}
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right, android.R.anim.slide_in_left, android.R.anim.slide_out_right);
ft.replace(R.id.content_frame, fragment, "visible_fragment");
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
if (getSupportFragmentManager().getBackStackEntryCount() >= 1) {
navigationView.setCheckedItem(R.id.menu_home);
navigationView.getMenu().performIdentifierAction(R.id.menu_home, 0);
}
}
Von onBackPressed
, ich für die Anzahl der Fragment in Backstack bin Überprüfung und dann starten HomeFragment wenn es größer oder gleich eins ist, aber das funktioniert nicht richtig. Zum Beispiel, wenn ich AbtFragment und dann ContFragment, und ich drücken Sie die Zurück-Taste, AbtFragment wird zunächst Flimmern auf dem Bildschirm vor HomeFragment wird beginnen gezeigt.
Bitte, wie korrigiere ich das?
Hinweis: HomeFragment ist der Standard frgament daher ist es standardmäßig gestartet ist, wenn die Aktivität gestartet wird.
addToBasckStack(). füge das HomeFragment unter deinem fragmentManager.replace() Code hinzu –
@RusheelJain: Ich verstehe dich nicht. – X09