Android 充气后,子视图为空

Android 充气后,子视图为空,android,android-layout,Android,Android Layout,好的,我这样做(不是实际的代码) 我读到,在膨胀之后,不能保证子视图被膨胀,所以当所有的子视图都准备好时,有什么好的方法获得回调呢 也许我误解了你的意图,但你似乎在夸大一个视图,而不是一个布局 试一试 然后视图将保存整个布局,从中可以通过Id找到具有 view.findViewById(...); 编辑: 很难知道它是否相关,因为您没有发布足够的代码,但请尝试以下方法: 从try/catch中获取视图,并将其作为类成员。放开决赛,让孩子上场 示例(假设ownComponentChild是框架布

好的,我这样做(不是实际的代码)


我读到,在膨胀之后,不能保证子视图被膨胀,所以当所有的子视图都准备好时,有什么好的方法获得回调呢

也许我误解了你的意图,但你似乎在夸大一个
视图,而不是一个布局

试一试

然后视图将保存整个布局,从中可以通过Id找到具有

view.findViewById(...);
编辑:

很难知道它是否相关,因为您没有发布足够的代码,但请尝试以下方法: 从try/catch中获取
视图
,并将其作为类成员。放开决赛,让孩子上场

示例(假设ownComponentChild是框架布局):


FrameLayout子级=(FrameLayout)view.findviewbyd(R.id.ownComponentChild)

这似乎是随机发生的,所以我唯一的猜测是,在这种情况下,内存会越来越低,因为我必须快速重新创建这么多UI组件,才能重新生成该代码。

在哪个上下文中使用该代码?首先在catch范围中添加一些内容。。或者你永远也不会知道充气是否失败。这在Gallery组件getView函数的自己实现中使用。这不是实际的代码,但非常类似,因此inflateExpection在那里处理。粘贴您的整个代码/方法…很抱歉,无法粘贴,这是机密代码,但您可以从小片段中了解要点。我认为有时会发生这种情况,因为要膨胀的视图太多,而且其中包含的子视图太多,以至于硬件速度不够快。视图实际上是FrameLayout,代码可以工作5/10次。@Niko,为什么要膨胀特定视图?膨胀包含FrameLayout的布局XML,然后使用findViewById(R.id.ownComponentChild)找到它的子级;请注意充气(R.layout…)和充气(R.id…)之间的区别。大多数情况下,可以找到子视图,并且没有看到空指针预期。膨胀到root和attachToRoot=true没有任何区别。还更新了代码,我在膨胀布局而不是视图,在那里编写代码片段时输入了拼写错误。没有任何区别,这里的问题是膨胀不是同步到膨胀所有子项,只有布局本身。
View view = LayoutInflater.from(context).inflate(R.layout.LAYOUT_THAT_HOLDS_ownComponent, this, true);
view.findViewById(...);