Я использую навигационный ящик в своем приложении, каждый элемент в ящике начинает фрагмент. Если фрагмент находится в поле зрения, и нажата кнопка «Назад», я хочу, чтобы активность начала первый фрагмент.Как плавно вернуться к первому фрагменту на обратном пути
разглагольствовать, если я смотрю на AbtFragment или ContaFragment и кнопка назад нажата, я хочу, чтобы начать деятельность или вернуться к HomeFragment.
Часть моей деятельности
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);
}
}
От onBackPressed
, я проверка количества фрагмента в backstack, а затем, начиная HomeFragment, если он больше или равен единице, но это не работает должным образом. Например, если я начинаю AbtFragment, а затем ContFragment, и я нажимаю кнопку назад, AbtFragment будет первым мерцание на экране перед HomeFragment будет показано.
Пожалуйста, как это исправить?
Примечание: HomeFragment является frgament по умолчанию, следовательно, он запускается по умолчанию, когда активность запускается.
addToBasckStack(). добавьте HomeFragment ниже вашего кода fragmentManager.replace() –
@ RusheelJain: Я вас не понимаю. – X09