3

我在这样的 for 循环中以编程方式将片段添加到我的活动中:

    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    for(int i = 0; i<bl.size(); i++)
    {ft.add(R.id.linearlayout, new BackflowDeviceFragment(), Integer.toString(i));}//for
    ft.commit();
    fm.executePendingTransactions();

然后我尝试像这样获取对这些片段的引用:

BackflowDeviceFragment frag = (BackflowDeviceFragment) fm.findFragmentByTag(Integer.toString(i));

我成功获得了参考,但是每当我尝试对任何片段的 UI 元素进行操作时,都会发现它们为空。所以我做了一些调试,发现我创建的用于操作 UI 元素的公共方法在我设置所有 UI 内容的 onCreateView() 方法之前被调用。

何时调用 onCreateView()?如何成功使用这些 UI 元素?

4

2 回答 2

3

根据片段文档, onCreateView() :

This will be called between onCreate(Bundle) and onActivityCreated(Bundle). 

所以你不应该在初始化之前引用你的 UI 元素。

于 2013-10-21T12:50:15.283 回答
0

希望我等了大约 10 分钟才让步并提出这个问题。在阅读了活动生命周期后,我发现如果我在 onResume() 而不是 onCreate() 中调用这些公共方法,一切都会正常工作。如果有人有更好的解决方案,我会留下这个问题。

于 2013-10-21T12:47:58.320 回答