ConstraintSet克隆崩溃

时间:2018-12-05 08:30:36

标签: android android-constraintlayout

我正在尝试克隆ConstraintSet,如:

        ConstraintLayout cl = findViewById(R.id.mainActivityParentCl);
        ConstraintSet constraintSet = new ConstraintSet();
        constraintSet.clone(cl);

它在克隆(cl)上崩溃,

Caused by: java.lang.RuntimeException: All children of ConstraintLayout must have ids to use ConstraintSet

使用

时不会崩溃
implementation 'com.android.support.constraint:constraint-layout:1.0.2'

它在1.1.3崩溃:

implementation 'com.android.support.constraint:constraint-layout:1.1.3'

解决方案?

1 个答案:

答案 0 :(得分:1)

您面临的问题是,从com.android.support.constraint:constraint-layout:1.1.0中必须给每个视图赋予id,因为当通过Java / Kotlin代码对XML进行处理时,尤其是当使用{复制布局时, {1}},可以进一步用于创建动态视图,该视图可以轻松创建;其ID(如果未给出)会像您一样抛出或引发异常(在克隆约束集时),因为重绘ConstraintSet时(例如,当应用程序进入后台然后恢复时)异常被触发(由于缺乏视图的可访问性,未提供其ID)。而且,根据Android开发者指南,您还必须为每个视图提供唯一的ID,以使该视图具有适当的可访问性。

希望对您有所帮助。