Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 片段UI元素为空_Java_Android_Android Fragments - Fatal编程技术网

Java 片段UI元素为空

Java 片段UI元素为空,java,android,android-fragments,Java,Android,Android Fragments,我以编程方式在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循环中将片段添加到活动中,如下所示:

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


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

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

根据片段,onCreateView():


因此,在初始化之前,您不应该引用UI元素。

我认为您可以在on Fragment的onActivityCreated()回调函数中完成自己的工作。onResume()不是最好的方法。对我来说,一种快速而肮脏的一次性操作方法是将runnable发布到您希望操作的视图中。我将检查我的片段代码,看看我同时在做什么。@Arash我为什么要避免使用onResume()?@DrS:因为根据生命周期,onResume()会被多次调用,如果你在onResume()中执行大量操作,这将是一个性能问题,它执行的任务比期望的多。@Arash是的,我刚刚遇到了一个问题,方向的改变会导致片段的重复。我刚刚了解了setArguments(Bundle args)方法。我用它把必要的信息传递给我的片段。
BackflowDeviceFragment frag = (BackflowDeviceFragment) fm.findFragmentByTag(Integer.toString(i));
This will be called between onCreate(Bundle) and onActivityCreated(Bundle).