так что у меня есть 5 разных фрагментов, которые будут иметь 5 разных бизнес логи c. но эти 5 фрагментов фактически имеют одно и то же представление / виджет. каждый фрагмент имеет только вид переработчика и индикатор выполнения. и я хочу сделать это проще, и я хочу избежать создания файла 5 xml, и каждый файл xml содержит представление рециркулятора и индикатор выполнения.
У меня есть 2 подхода.
Первый подход. Я делаю файл xml, назовем его widgets.xml
, который будет содержать вид рециркулятора и индикатор выполнения. и тогда я включу widgets.xml
во все 5 фрагментов макета xml. поэтому у меня все еще будет 5 макетов xml для каждого фрагмента, но xml прост, как этот
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.BFragment" >
<include
layout="@layout/widgets"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
второй подход. Я делаю только один xml, который будет использоваться для всех моих 5 фрагментов. поэтому я просто изменяю компоновку в inflate
в представлении onCreate
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
setUpRemoteConfigDataForThisFragment()
return inflater.inflate(R.layout.fragment_reusable, container, false)
}
, какой из них лучше? или это лучший подход?
Я склонен выбирать второй подход, но меня беспокоит атрибут компоновки ограничения tools:context
(root). если я просто сделаю один, то у меня будет только один контекст для всех моих фрагментов. это нормально?
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.BFragment" > <---- I mean this context
// child views here
</androidx.constraintlayout.widget.ConstraintLayout>