java - 即使在 FragmentManager.executePendingTransactions() 之后,也不会立即调用 Fragment 中的 onCreateView()

标签 java android fragment

我读到如果我们需要立即创建 fragment ,我们必须在 FragmentManager 上调用 executePendingTransactions() 方法。嗯,这就是我想要做的。像这样:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);

    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    fragmentTransaction.add(R.layout.fragmentContainer, new MyFragment);
    fragmentTransaction.commit();
    fragmentManager.executePendingTransactions();

    foo(); // It is called before MyFragment's onCreateView()
}

我想知道为什么在 MyFragmentonCreateView() 之前调用 foo() 方法。如您所见,我在 UI 线程中调用了 executePendingTransactions() 。我根本不会在这里搞乱线程。

最佳答案

我遇到了同样的问题,我发现如果我从 onStart 方法中运行相同的 fragmentTransaction 代码,执行会按预期工作。不过,我对 Android View 生命周期的了解还不够,无法知道为什么会出现这种情况。

public void onStart() {
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    fragmentTransaction.add(R.layout.fragmentContainer, new MyFragment);
    fragmentTransaction.commit();
    fragmentManager.executePendingTransactions();

    foo(); // Should now work correctly
}

关于java - 即使在 FragmentManager.executePendingTransactions() 之后,也不会立即调用 Fragment 中的 onCreateView(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17229500/

相关文章:

Java swing 将多个文本字段保存到一个对象中

java - 检查字符串中是否有年份

java - 比较两个 ArrayList 以获得唯一值和重复值

java - 如何使用 JPA 存储库更新实体中的一个字段

android - 如何将数据从 BottomSheetDialogFragment 返回到父 Fragment

java - 为什么我得到的 fragment 是 "Unreachable Statement Error"?

android - SiP域演示(安卓)

android - 为什么 Active Android 不适用于 gradle 2.0?

android - setRepeatingRequest 和 setRepeatingBurst 的区别?

android - 使用后退按钮返回上一个 fragment 后如何更改前一个 fragment 的 View ?