diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9604b34..cc691a7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,8 +12,15 @@
android:supportsRtl="true"
android:theme="@style/Theme.Fragments"
tools:targetApi="31">
+
+
diff --git a/app/src/main/java/otus/gpb/homework/fragments/FirstActivity.kt b/app/src/main/java/otus/gpb/homework/fragments/FirstActivity.kt
new file mode 100644
index 0000000..134cfa8
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/FirstActivity.kt
@@ -0,0 +1,16 @@
+package otus.gpb.homework.fragments
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+
+class FirstActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_first)
+
+ supportFragmentManager
+ .beginTransaction()
+ .add(R.id.container, FragmentA())
+ .commit()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/fragments/FragmentA.kt b/app/src/main/java/otus/gpb/homework/fragments/FragmentA.kt
new file mode 100644
index 0000000..ee943ee
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/FragmentA.kt
@@ -0,0 +1,60 @@
+package otus.gpb.homework.fragments
+
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.View.GONE
+import android.view.View.VISIBLE
+import android.view.ViewGroup
+import android.widget.Button
+import androidx.activity.OnBackPressedCallback
+import androidx.core.os.bundleOf
+import androidx.fragment.app.Fragment
+
+class FragmentA : Fragment() {
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ return inflater.inflate(R.layout.fragment_a, container, false)
+ }
+
+ private lateinit var button: Button
+
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+ val callback = object : OnBackPressedCallback(true) {
+ override fun handleOnBackPressed() {
+ if (childFragmentManager.backStackEntryCount == 1) {
+ activity?.title = getString(R.string.fragment_a)
+ button.visibility = VISIBLE
+ }
+ if (childFragmentManager.backStackEntryCount >= 1) {
+ childFragmentManager.popBackStack()
+ } else {
+ requireActivity().finish()
+ }
+ }
+ }
+ requireActivity().onBackPressedDispatcher.addCallback(this, callback)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ activity?.title = getString(R.string.fragment_a)
+
+ button = view.findViewById(R.id.button_aa)
+ button.setOnClickListener {
+ button.visibility = GONE
+ childFragmentManager
+ .beginTransaction()
+ .replace(R.id.container, FragmentAA().apply {
+ arguments = bundleOf(KEY_COLOR to ColorGenerator.generateColor())
+ })
+ .addToBackStack(null)
+ .commit()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/fragments/FragmentAA.kt b/app/src/main/java/otus/gpb/homework/fragments/FragmentAA.kt
new file mode 100644
index 0000000..fdda28e
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/FragmentAA.kt
@@ -0,0 +1,37 @@
+package otus.gpb.homework.fragments
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import androidx.core.os.bundleOf
+
+class FragmentAA : Fragment() {
+ private lateinit var button: Button
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ return inflater.inflate(R.layout.fragment_a_a, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ activity?.title = getString(R.string.fragment_aa)
+
+ view.setBackgroundColor(requireArguments().getInt(KEY_COLOR))
+ button = view.findViewById(R.id.button_a_b)
+ button.setOnClickListener {
+ parentFragmentManager
+ .beginTransaction()
+ .replace(R.id.container, FragmentAB().apply {
+ arguments = bundleOf(KEY_COLOR to ColorGenerator.generateColor())
+ })
+ .addToBackStack(null)
+ .commit()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/fragments/FragmentAB.kt b/app/src/main/java/otus/gpb/homework/fragments/FragmentAB.kt
new file mode 100644
index 0000000..24a06fd
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/FragmentAB.kt
@@ -0,0 +1,24 @@
+package otus.gpb.homework.fragments
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+
+class FragmentAB : Fragment() {
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ return inflater.inflate(R.layout.fragment_a_b, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ activity?.title = getString(R.string.fragment_ab)
+
+ view.setBackgroundColor(requireArguments().getInt(KEY_COLOR))
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/fragments/FragmentBA.kt b/app/src/main/java/otus/gpb/homework/fragments/FragmentBA.kt
new file mode 100644
index 0000000..597d7d1
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/FragmentBA.kt
@@ -0,0 +1,46 @@
+package otus.gpb.homework.fragments
+
+import android.content.res.Configuration.ORIENTATION_LANDSCAPE
+import android.content.res.Configuration.ORIENTATION_PORTRAIT
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.View.GONE
+import android.view.View.VISIBLE
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.FrameLayout
+import androidx.fragment.app.Fragment
+
+class FragmentBA : Fragment() {
+ private lateinit var button: Button
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ return inflater.inflate(R.layout.fragment_b_a, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ val orientation = resources.configuration.orientation
+ view.setBackgroundColor(requireArguments().getInt(KEY_COLOR))
+
+ button = view.findViewById(R.id.button_bb)
+ if (orientation == ORIENTATION_PORTRAIT) {
+ requireActivity().findViewById(R.id.container_ba).visibility = VISIBLE
+ requireActivity().findViewById(R.id.container_bb).visibility = GONE
+ button.visibility = VISIBLE
+ button.setOnClickListener {
+ parentFragmentManager
+ .beginTransaction()
+ .replace(R.id.container_bb, FragmentBB())
+ .commit()
+ }
+ } else if (orientation == ORIENTATION_LANDSCAPE) {
+ button.visibility = GONE
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/fragments/FragmentBB.kt b/app/src/main/java/otus/gpb/homework/fragments/FragmentBB.kt
new file mode 100644
index 0000000..64c2980
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/FragmentBB.kt
@@ -0,0 +1,41 @@
+package otus.gpb.homework.fragments
+
+import android.content.res.Configuration.ORIENTATION_PORTRAIT
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.View.GONE
+import android.view.View.VISIBLE
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.FrameLayout
+import androidx.core.os.bundleOf
+
+class FragmentBB : Fragment() {
+ private lateinit var button: Button
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ return inflater.inflate(R.layout.fragment_b_b, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ button = view.findViewById(R.id.button_color)
+ if (resources.configuration.orientation == ORIENTATION_PORTRAIT) {
+ requireActivity().findViewById(R.id.container_ba).visibility = GONE
+ requireActivity().findViewById(R.id.container_bb).visibility = VISIBLE
+ }
+ button.setOnClickListener {
+ parentFragmentManager.beginTransaction()
+ .replace(R.id.container_ba, FragmentBA().apply {
+ arguments = bundleOf(KEY_COLOR to ColorGenerator.generateColor())
+ })
+ .commit()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/fragments/MainActivity.kt b/app/src/main/java/otus/gpb/homework/fragments/MainActivity.kt
index 5e89c44..c4b3c5a 100644
--- a/app/src/main/java/otus/gpb/homework/fragments/MainActivity.kt
+++ b/app/src/main/java/otus/gpb/homework/fragments/MainActivity.kt
@@ -1,12 +1,28 @@
package otus.gpb.homework.fragments
+import android.content.Intent
import android.os.Bundle
+import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
+
+const val KEY_COLOR = "color"
+
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
+
+ val buttonFirst = findViewById