java - 在android中浏览Fragment而不将其添加到backstack中

标签 java android fragment

我正在使用 Android 应用程序。我面临着像在后堆栈历史记录中添加 fragment 这样的问题。让我清楚地解释一下,我想从 fragment A 导航到 fragment B,然后使用 fragment B 中的按钮单击返回 fragment A。以上场景运行良好,在导航到 fragment A 后,当我单击设备中的后退箭头时,导航到 fragment B。我不希望这种情况发生。给我一个解决方案。我的代码结构如下:

fragment A:

.......
FragmentB fragmentB = new FragmentB();
showFragmentOmitStack(fragmentB);
....


public void showFragmentOmitStack(Fragment fragment) {
 FragmentTransaction transaction = getFragmentManager().beginTransaction();
 transaction.add(R.id.container,fragment);//add // replace
 transaction.addToBackStack(null);
 transaction.commit();
}

fragment B:

FragmentA fragmentA = new FragmentA();
showFragment(fragmentA, "FragmentA");


public void showFragment(Fragment fragment, String back_stack_name) {
 FragmentManager fragmentManager = thisActivity.getFragmentManager();
 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
 fragmentTransaction.add(R.id.container, fragment);
 fragmentTransaction.addToBackStack(back_stack_name);
 fragmentTransaction.commit();
}

在我的 Activity java 文件中:

@Override
public void onBackPressed() {
 DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
 if (drawer.isDrawerOpen(GravityCompat.START)) {
     drawer.closeDrawer(GravityCompat.START);
   } else {
    if (getFragmentManager().getBackStackEntryCount() == 0) {
      showAlertDialog(Constants.EXIT_APP, Constants.APP_NAME);
     } else {
        getFragmentManager().popBackStackImmediate();
            }
        }
    }

最佳答案

试试这个:

@Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
        getSupportFragmentManager().popBackStack();
    }else {
       if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
           drawerLayout.closeDrawer(GravityCompat.START);
         } else {
            super.onBackPressed();
        }  
    }
}

关于java - 在android中浏览Fragment而不将其添加到backstack中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46237502/

相关文章:

java - 销毁/停止线程

java - 在 Java 中解析日期时出现异常

java - Foreach 循环语法错误

java - 推荐的框架、库和概念

Android 将普通布局更改为图像按钮和其他选项卡布局错误?

android - 从 fragment 内部访问Toolbar/ActionBar对象

android - 加拿大的本地化默认为英国;应该默认为美国

android - 根上的 Firebase 引用查询

android - 为什么在Android中使用ContextImpl而不是ContextWrapper来实现Context?

android - 将自定义类传递给 Fragment