更新为com.android.support.constraint:constraint-layout:1.1.0
约束布局崩溃说:
约束布局的所有子节点都应该使用id来使用约束 设置
我已经为所有视图设置了ID,即使它崩溃了。
java.lang.RuntimeException: All children of ConstraintLayout must have ids to use ConstraintSet at android.support.constraint.ConstraintSet.clone(ConstraintSet.java:687) at com.zoho.notebook.views.SettingsViewNavBar.showNoteSettingsView(SettingsViewNavBar.java:594) at com.zoho.notebook.views.SettingsViewNavBar.onClick(SettingsViewNavBar.java:303)
此问题仅发生在平板电脑设备上。
答案 0 :(得分:20)
我的代码中有同样的错误。我有xid中所有视图的id,但是我手动将视图添加到约束布局(工具提示视图)
constraintParent.addView(childView)
虽然如果重绘约束布局(app转到bg并恢复),动态添加的视图仍在父级上,但此异常被触发。
我通过生成动态视图的视图ID来修复它,如此
CustomViewChildView childView = new CustomViewChildView()
childView.setId(View.generateViewId());
然后将其添加到约束布局。
答案 1 :(得分:2)
不要忘记为ConstraintLayout提供一个ID 。
我忘记了它,这使我的代码崩溃。从错误来看,这不是很明显。
答案 2 :(得分:1)
我一直得到这个错误,直到我意识到我没有为ConstraintLayout中的某些子元素赋予ID。因此,请确保您也不要忘记这样做。
答案 3 :(得分:0)
我只是想出如何解决此问题。请注意,您必须声明ConstrainLayout上的所有视图都具有设置的ID,请检查以下示例:
如果是第一种情况,则工作成功。
<android.support.constraint.ConstraintLayout
android:id="@+id/viewGroup"
...>
<ImageView
android:id="@+id/imgId"
... />
<TextView
android:id="@+id/txtId"
... />
如果下面的情况2无法正常工作。
<android.support.constraint.ConstraintLayout
android:id="@+id/viewGroup"
...>
<ImageView
android:id="@+id/imgId"
... />
<TextView
// do not set ids
... />
我希望这会对您有所帮助。
答案 4 :(得分:0)
就我而言 不要忘记为 contraintLayout 的所有孩子添加 ID
答案 5 :(得分:0)
当我尝试在 onGlobalLayout()
(主布局完成后)添加新视图时遇到此错误。布局中的所有 id 都是正确的,设置了新的动态视图 ID(使用 setId()
)。但故障 "All Children of constraint layout should have ids to use constraint set"
不断发生。
当我将 View
添加到 onCreate()
时,一切都很顺利。我只需要更改关于如何放置新 View
的逻辑,因为其他视图的位置在 onCreate()
处未确定。