2

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

try {
    final View view = LayoutInflater.from(context).inflate(R.layout.ownComponent, null);
} catch (InflateExpection e) {
}

if (view != null) {
    // This child is null about 5/10 times!

    View child = view.findViewById(R.id.ownComponentChild);
}

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

4

2 回答 2

1

也许我误解了你想要做什么,但看起来你正在膨胀View而不是布局......

尝试

View view = LayoutInflater.from(context).inflate(R.layout.LAYOUT_THAT_HOLDS_ownComponent, this, true);

然后 view 将保存整个布局,您可以从中通过 Id 找到孩子

view.findViewById(...);

编辑:

很难知道它是否相关,因为您没有发布足够的代码,但试试这个:View view摆脱 try/catch 并将其作为类成员。松开决赛并投下孩子。

示例(假设 ownComponentChild 是 FrameLayout):

FrameLayout child = (FrameLayout)view.findViewById(R.id.ownComponentChild);

于 2012-05-09T11:05:47.680 回答
0

这似乎是随机发生的,所以我唯一的猜测是在这种情况下内存变低了,因为我必须快速重新创建这么多 UI 组件才能重现它。

于 2012-08-01T04:41:09.430 回答