- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我回顾一个项目的旧代码时,我意识到整个项目都在使用 FragmentTransaction.replace
而不是 FragmentTransaction.add
。
public class UpgradePremiumFragmentActivity extends SherlockFragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
if (savedInstanceState == null) {
UpgradePremiumFragment upgradePremiumFragment = UpgradePremiumFragment.newInstance();
getSupportFragmentManager().beginTransaction().replace(R.id.content, upgradePremiumFragment).commitAllowingStateLoss();
} else {
}
}
我想知道,在上述情况下是否有任何理由使用 replace
而不是 add
?由于 savedInstanceState
为 null,因此不应该有用于替换的旧 fragment 。
最佳答案
替换可防止您拥有多个相同的 fragment 。
如果您使用 Add, fragment 将简单地添加到 FragmentManager。替换将在添加之前删除任何其他具有相同 ID(占用相同容器)的 fragment 。
如果您 100% 确定没有以前的 fragment ,那么您可以安全地使用“添加”。
来自文档:
public abstract FragmentTransaction replace (int containerViewId, Fragment fragment, String tag)
Replace an existing fragment that was added to a container. This is essentially the same as calling remove(Fragment) for all currently added fragments that were added with the same containerViewId and then add(int, Fragment, String) with the same arguments given here.
关于android - 有什么理由在第一次提交时使用 FragmentTransaction.replace 而不是 FragmentTransaction.add 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19249825/
您好,我希望我的下一个输出(在本例中就是字母)在上一个输出之后输出 8 个空格。这适用于第一个字符,但之后的 printf 语句不起作用。它在第一个 printf 语句之后立即打印,我试图将其设置为
我想知道制作 std::list<>::splice 背后的基本原理是什么使引用被拼接到新容器中的子序列的迭代器无效。这对我来说有点不合逻辑,尤其是考虑到标准 std::container::swap
谁能告诉我为什么我应该使用 Azure Function 输出绑定(bind)(例如 SendGrid 或 Twilio)而不是仅仅在我的 C# 函数中显式使用适当的 SDK(例如 Sendgrid
我们在当前项目中使用 React 和 TypeScript,我遇到了以下行为。 import React, { Component } from 'react'; 我将上面的行替换为下面的行,因为它似
我是一名优秀的程序员,十分优秀!