removeAllViews()对子视图有什么作用?

Abr*_*Voy 1 layout android view

我的布局中具有以下层次结构:

ScrollView
    RadioGroup
        RelativeLayout
            RadioButton
            ImageView
        RelativeLayout
            RadioButton
            ImageView
            ...
Run Code Online (Sandbox Code Playgroud)

现在的要点是,它在XML编辑器中看起来不错,RadioButtons并且ImageViews已定义了默认值(占位符),但是当我启动活动并调用removeAllViews()RadioGroup,所有都ImageViews消失了。有趣的是,所有按钮仅获得新值ImageViews无论如何都不会更新(设置新的源图像不会产生任何结果)。

因此,我的问题是:是否完全removeAllViews()擦除子视图(就像它们在布局XML文件中不存在)还是只是删除一些值以保留视图的自变量(例如设置新的源图像或新的按钮描述)?

Ram*_*ami 5

根据官方文档removeAllViews()

调用此方法从ViewGroup中删除所有子视图。

调用此方法会将所有null子视图设置为,因此将从其自身中删除子视图,并且该子视图无效(或不视为子视图),但又不像XML文件中不存在的子视图那样。

这是removeAllViews()代码

public void removeAllViews() {
     removeAllViewsInLayout();
     requestLayout();
     invalidate();
} 
Run Code Online (Sandbox Code Playgroud)

如您在removeAllViewsInLayout()方法中所看到的,它将子值设置为null:

children[i] = null;