我在我的應用程序中使用導航抽屜,抽屜中的每個項目都會啓動一個片段。如果片段在視圖中,並且後退按鈕被按下,我希望活動啓動第一個片段。如何順利地回到第一個背部片段
爲了闡述,如果我在看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
的
部分,我檢查了在堆棧中片段的數量,然後開始HomeFragment,如果它是大於或等於一,但是這是不工作正常。 例如,如果我開始AbtFragment,然後ContFragment,我按下返回按鈕,AbtFragment將將被顯示在屏幕上第一閃爍之前HomeFragment。
請問我該如何糾正?
注意:HomeFragment是默認frgament因此它在默認情況下啓動時的活動推出。
addToBasckStack()。在你的fragmentManager.replace()代碼下面添加HomeFragment代碼 –
@RusheelJain:我不明白你。 – X09