首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从碎片中移除碎片

从碎片中移除碎片
EN

Stack Overflow用户
提问于 2016-12-13 17:38:59
回答 2查看 1.9K关注 0票数 0

我有一个Activity,它创建一个Fragment,然后这个Fragment创建另一个Fragment

Activity -> Fragment1 -> Fragment2

我现在在Fragment2,我想通过点击一个按钮回到Fragment1

在我的OnClickListener of my button中,我有:

代码语言:javascript
复制
getActivity().getSupportFragmentManager().beginTransaction().remove(fragment2.this).commit();

这让我想到了Activity。是否有一种方法只需移除Fragment2并转到Fragment1

谢谢您的时间,我在网上找不到任何合适的信息!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-13 19:28:56

@AhmedAbidi对你的问题有一个很好的洞察力,是的,正确地实施popBackStack可以解决你的问题。不过,无论如何,我想提出一个不同的方法来处理这种情况。

Activity中编写两个公共函数以在片段之间切换。

代码语言:javascript
复制
public void switchToFragment1() {
    getSupportFragmentManager().beginTransaction()
        .replace(R.id.fragment_container, new Fragment1()).commit();
}

public void switchToFragment2() {
    getSupportFragmentManager().beginTransaction()
        .replace(R.id.fragment_container, new Fragment2()).commit();
}

现在,通过单击Fragment1中的按钮,您可以通过

代码语言:javascript
复制
((YourActivity) getActivity()).switchToFragment2();

在切换到Fragment1时也是一样的

代码语言:javascript
复制
((YourActivity) getActivity()).switchToFragment1();
票数 3
EN

Stack Overflow用户

发布于 2016-12-13 19:43:46

你的问题需要更多的代码来澄清。

Fragment1是通过getSupportFragmentManager()或getChildFragmentManager()添加Fragment2吗?假设您正在执行前者,如果是这样,则使用片段API是错误的。按照Android的片段文档的说法,片段之间不应该相互了解:

通常,您希望一个片段与另一个片段进行通信,例如根据用户事件更改内容。所有片段到片段的通信都是通过相关的活动完成的。两个片段不应该直接交流。

因此,您应该实现适当的侦听器,以便从Fragment1到Activity通信,然后活动可以决定在哪里/何时添加Fragment2 -然后正确地利用getSupportFragmentManager().addToBackStack()的后台堆栈功能.用getSupportFragmentManager().popBackStack()。有关进一步解释,请参见片段反向导航的Android文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41127315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档