当前位置: 首页 > 知识库问答 >
问题:

如何从后台弹出碎片

鲁峰
2023-03-14

我有一个活动A,它调用fragment Bf,它调用fragment Cf。我希望在调用Cf时将Bf放置在Backback中,以便用户可以导航回它。然而,如果在Cf中按下特定按钮,我希望Bf从Backback中删除。这可能吗?

我看到有一个popBackStack()函数。然而,我有点困惑这将如何工作。使用此功能安全吗?是否有可能在Backback上的Bf之后插入来自不同应用程序的活动?

此外,是否有任何方法可以更改备份上片段的savedInstanceState?

我只是不知道如何使用模拟器在backback上进行健壮测试。

共有3个答案

诸葛砚
2023-03-14

第一次替换片段container_view那时候我们像"稍后交易"一样添加名称

   getSupportFragmentManager().beginTransaction().replace(R.id.container_view, 
    profileFragment, "Profile").addToBackStack("Later Transaction").commit();

然后在后退时按下按钮,使用后续事务名称弹出后退堆栈

     int count = getSupportFragmentManager().getBackStackEntryCount();
    if(count > 1) {
     getSupportFragmentManager().popBackStack("Later Transaction", 
     FragmentManager.POP_BACK_STACK_INCLUSIVE);
    } else {
        DialogUtils.show(HomeActivity.this, 
        getString(R.string.exit_app_message), getString(R.string.alert), 
       "Yes","No", new DialogUtils.ActionListner() {
            @Override
            public void onPositiveAction() {
                finish();
            }
            @Override
            public void onNegativeAction() {
            }
        });
    }
芮瑾瑜
2023-03-14

三种从后台弹出碎片的方法

只需添加以下任何一行:

1)

getActivity().getSupportFragmentManager().popBackStack();

2)

getActivity().getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

3)

getActivity().getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

它们都是从后台弹出碎片的简单方法

穆鸿卓
2023-03-14

您可以按名称弹出片段。在将片段添加到后堆栈时,只需为它们命名。

fragmentTransaction.addToBackStack("fragB");
fragmentTransaction.addToBackStack("fragC");

然后在Fragment_C中,使用名称ie弹出后堆栈fragB和includePOP\u BACK\u STACK\u include

someButtonInC.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        FragmentManager fm = getActivity()
                .getSupportFragmentManager();
        fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
});

 类似资料:
  • 所以我有一个活动,其中有一个片段,片段有一个导航抽屉和页面的内容。当我打开抽屉并单击一个项目时,片段被替换为一个新片段。当我按下后退按钮时,我在片段管理器上调用popBackStack,它返回到第一个片段,但导航抽屉是打开的。 有几件事要注意:当按下抽屉中的一个项目时,我在抽屉布局上调用关闭抽屉,当片段被替换时抽屉关闭。如果我按下操作栏中的UP按钮,我可以用新的主片段替换片段容器,但我更喜欢能够将

  • 我试图从扩展服务的类中打开一个活动。当应用程序不在前台/未被使用时,我正在执行此任务。我可以在日志中看到,我的服务类故意触发了启动活动。标志\活动\新任务标志。但活动并未开始。但是,当应用程序处于前台/正在使用时,服务触发相同的活动时,活动就会打开。 经过几次搜索,我发现我需要在应用程序设置的“其他权限”部分中手动授予“在后台运行android时显示弹出窗口”的权限。 “在其他应用程序上显示”权限

  • 3月初投递的腾讯,意向部门游戏安全。简历投递后接到过两次电话面试(非视频面试),后来无果。官网流程一直卡在简历初筛,自己认为已经无望腾讯。 4月23日,简历被捞起来,发送了一面邮件,约定4.24面试,视频面试很正式。之后就是正常的面试。面试过程没有记录,以下面经来自回忆不一定准确。 一面内容-40min+ 自我介绍 问我有没有对android app的安全研究经历 问了android的一些反调试方

  • null null null (void)applicationdidbeceeactive:(UIApplication*)application { } null { } -(无效)appdidbeceactive }

  • 假设在创建索引时,我没有为此设置任何副本,如果我使用update settings API进行更新,并且将副本状态更改为1。如果我有2个节点,那么应该在第二个节点上创建副本,因为在主节点侧,由于集群状态显示黄色,碎片没有分配给node2,所以不会创建副本,即使我们将副本启用为1。 请分享为什么副本碎片没有分配到Node2? 但在集群启动时,节点显示它们检测到并相互连接。