Android 在片段中的何处启动视图?onViewCreated或onActivityCreated
那么,在片段中启动视图的最佳位置在哪里呢?我们知道,我们应该只在Android 在片段中的何处启动视图?onViewCreated或onActivityCreated,android,android-fragments,android-lifecycle,android-inflate,fragment-lifecycle,Android,Android Fragments,Android Lifecycle,Android Inflate,Fragment Lifecycle,那么,在片段中启动视图的最佳位置在哪里呢?我们知道,我们应该只在onCreate()中膨胀布局,而不是像设置侦听器那样启动视图 您应该在onCreateView中膨胀布局,但不应该在onCreateView中使用findViewById初始化其他视图 我们知道,onViewCreated()是在onCreateView()之后立即调用的,基本上视图是膨胀的,一切都准备好了。但问题是每次你转到另一个页面并返回时,都会调用onViewCreated!因此,如果您在此处启动视图,例如添加一些侦听器,因
onCreate()
中膨胀布局,而不是像设置侦听器那样启动视图
您应该在onCreateView中膨胀布局,但不应该在onCreateView中使用findViewById初始化其他视图
我们知道,onViewCreated()
是在onCreateView()之后立即调用的,基本上视图是膨胀的,一切都准备好了。但问题是每次你转到另一个页面并返回时,都会调用onViewCreated
!因此,如果您在此处启动视图,例如添加一些侦听器,因为onViewCreated
被多次调用,您最终会多次启动视图
因此,我的问题是:
- 我是否理解
onCreateView()
和onViewCreated
对吗
- 使用
onActivityCreated
启动视图是否正确,因为它只调用一次,并且在onCreateView()之后调用
您应该在onCreateView()
中为视图充气
然后您应该在onViewCreated()
中设置视图。尽管如此,许多人在膨胀视图后,只需在onCreateView()中设置它们的视图
如果该函数被多次调用,则片段本身已被破坏,需要重建。否,如果不想破坏视图,应更改ViewPagers屏幕外页面限制。否则,您将违反生命周期。请参阅碎片方法。我不确定碎片是否会被销毁!因为当您从片段导航到某个地方并返回时,onCreateView
将不会被调用,但onViewCreated
将被调用。还有,你对创建的活动有什么看法?我很想直接看看发生了什么。我希望在创建视图后只调用一次onViewCreated()
。然而,我承认我是喜欢在onCreateView()
中处理所有UI的人之一至于onActivityCreated()
,我只会在需要保证从片段
访问活动
的情况下使用它。过去,最好的回话方式是使用带有回调的接口。一旦调用了activitycreated()
,则,你知道这个活动已经准备好被调用了。是的,我认为当一个片段事务被调用时,它就会发生used@Knossos是否有可能onViewCreated过载,并且发生的某些事情没有足够的时间进行适当准备,我们需要使用onViewCreated?您是否曾经遇到过需要在ViewCreated上解决的问题?