Фрагменты (Fragments) — это компоненты Android, представляющие собой модульные части UI и логики, которые можно комбинировать в рамках одной Activity. Они были введены в Android 3.0 (API 11) для решения ключевых задач, связанных с гибкостью, адаптивностью и повторным использованием кода.
Фрагменты позволяют создавать responsive-интерфейсы, которые динамически подстраиваются под:
Master-Detail
).Пример компоновки для планшета:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<fragment
android:id="@+id/listFragment"
android:name="com.example.ListFragment"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"/>
<fragment
android:id="@+id/detailFragment"
android:name="com.example.DetailFragment"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="match_parent"/>
</LinearLayout>
Пример фрагмента для навигации:
class NavigationFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return inflater.inflate(R.layout.fragment_navigation, container, false)
}
fun onButtonClick() {
// Общая логика для всех Activity
}
}
Фрагменты имеют собственный жизненный цикл (onCreate
, onStart
, onResume
и т.д.), что позволяет:
onSaveInstanceState
.FragmentManager
.addToBackStack()
.Пример транзакции:
supportFragmentManager.beginTransaction()
.replace(R.id.container, DetailFragment())
.addToBackStack("detail")
.commit()
Фрагменты решают следующие задачи:
Пример современного подхода (Jetpack Navigation):
// Навигация между фрагментами через граф
findNavController().navigate(R.id.action_list_to_detail)