Я пытаюсь добавить два фрагмента в макет ограничения, а затем установить их ограничения, чтобы нижний фрагмент всегда был привязан к нижней части макета приложения, а верхний фрагмент мог заполнить любое оставшееся пространство. Мой код для этого выглядит следующим образом:
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.add(R.id.app_con_layout,fragmentA)
fragmentTransaction.add(R.id.app_con_layout,fragmentB)
fragmentTransaction.commit()
val mConstraintLayout = findViewById<ConstraintLayout>(R.id.app_con_layout)
val set = ConstraintSet()
set.clone(mConstraintLayout)
set.connect(fragmentA.id, ConstraintSet.TOP, R.id.app_toolbar, ConstraintSet.BOTTOM)
set.connect(fragmentB.id, ConstraintSet.BOTTOM, mConstraintLayout.id, ConstraintSet.BOTTOM)
set.applyTo(mConstraintLayout)
Это не работает, и два фрагмента, кажется, оказываются друг на друге. Насколько я понимаю, фрагменты не получат уникальных идентификаторов, и вместо этого я должен использовать теги как часть транзакции фрагмента, чтобы впоследствии иметь возможность однозначно ссылаться на фрагменты. Но это кажется несовместимым с методом ConstraintSet connect
, который требует целочисленного идентификатора.
Как правильно решить эту проблему? Я мог бы добавить макеты фреймов к макету ограничений в xml, а затем добавить к ним фрагменты, но это похоже на обходной путь, поэтому я подозреваю, что я чего-то упускаю.