【问题标题】:onCreateView() in Fragment is not called immediately, even after FragmentManager.executePendingTransactions()即使在 FragmentManager.executePendingTransactions() 之后,也不会立即调用 Fragment 中的 onCreateView()
【发布时间】:2013-06-18 05:54:18
【问题描述】:

我读到如果我们需要立即创建片段,我们必须在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() 是应该的。我根本不会在这里搞乱线程。

【问题讨论】:

  • 你能附加一个布尔值来执行像boolean val = fragmentManager.executePendingTransactions();这样的挂起的txns,看看在调试时调用foo后它会产生什么。
  • 您好,请问有这个问题的消息吗?我面临同样的问题,无法找到解决方案。如果你已经解决了,可以分享一下解决方案吗?
  • @Haspemulator 不幸的是,我最终决定使用完全不同的方法。
  • 我仍然对为什么它在 onStart 而不是 onCreate 中有效。有人吗?

标签: java android fragment


【解决方案1】:

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

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
}

【讨论】:

  • 谢谢!我只想添加一个有用的功能 - 使用 onPostCreate() 而不是 onStart() 以避免每次调用 onStart() 时创建片段。干杯!
  • 哇,我不敢相信这行得通。 Android 真是令人困惑的编辑:whaaaa no this onStart 在没有 oncreate 的情况下被调用,比如从相机意图返回......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
相关资源
最近更新 更多