首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android片段:何时使用隐藏/显示或添加/删除/替换?

Android片段:何时使用隐藏/显示或添加/删除/替换?
EN

Stack Overflow用户
提问于 2012-10-31 08:11:52
回答 4查看 60.8K关注 0票数 123

假设我希望将某个容器视图中的当前片段替换为另一个。使用replace更好?

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_container, newFragment, null);
    ft.commit();

..。或者是下面的,显示和隐藏?

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.hide(oldFragment);
    ft.show(newFragment);
    ft.commit();

是不是有一种方法更有效?我找不到太多关于何时使用这些方法的信息,或者它们如何影响所涉及片段的生命周期。谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-02 04:32:40

您应该考虑计划如何处理片段,以确定要遵循哪条路径。如果您使用FragmentTransaction来隐藏片段,那么它仍然可以处于其生命周期的运行状态,但是它的UI已经与窗口分离,因此它不再可见。因此,从技术上讲,您仍然可以与片段交互,并在以后需要重新附加它的UI。如果你替换这个片段,你实际上是将它从容器中拉出来,它将经历生命周期中的所有teardown事件(onPause,onStop等),如果你出于某种原因再次需要那个片段,你必须将它插入到容器中,让它再次运行它的所有初始化。

如果您很有可能再次需要该片段,那么只需隐藏它,因为重新绘制它的布局比完全重新初始化它的操作成本更低。

票数 144
EN

Stack Overflow用户

发布于 2012-10-31 08:47:31

你基本上是自己回答的。如果你想替换(所以不再需要旧的片段),使用replace(),如果你想暂时隐藏它,那么使用hide()

票数 5
EN

Stack Overflow用户

发布于 2018-12-25 13:24:29

我在我的活动中使用了hide/Show方法,用了4个片段,解决了我的解决方案,但是当我随机地显示我的对话框时,当我使用add和replace方法时,它给出了窗口坏的令牌异常,然后没有出现坏的令牌异常,所以我认为显示/隐藏方法是不完美的

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

https://stackoverflow.com/questions/13149446

复制
相关文章

相似问题

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