diff --git a/app/build.gradle b/app/build.gradle
index c5cf1b8..64ccb51 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,7 +8,7 @@ kotlin {
}
android {
- compileSdk 34
+ compileSdk 35
namespace "otus.gpb.homework.fragments"
defaultConfig {
@@ -34,6 +34,9 @@ android {
kotlinOptions {
jvmTarget = '17'
}
+ viewBinding {
+ enabled = true
+ }
}
dependencies {
@@ -42,6 +45,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ implementation 'androidx.activity:activity:1.10.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9604b34..0e03e51 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,12 @@
android:supportsRtl="true"
android:theme="@style/Theme.Fragments"
tools:targetApi="31">
+
+
diff --git a/app/src/main/java/otus/gpb/homework/fragments/ActivityOne.kt b/app/src/main/java/otus/gpb/homework/fragments/ActivityOne.kt
new file mode 100644
index 0000000..5c27090
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/ActivityOne.kt
@@ -0,0 +1,23 @@
+package otus.gpb.homework.fragments
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+
+class ActivityOne : AppCompatActivity() {
+
+ private lateinit var fragmentA: FragmentA
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.activity_one)
+
+ fragmentA = FragmentA()
+ supportFragmentManager.beginTransaction()
+ .replace(R.id.fragmentAContainer, fragmentA)
+ .commit()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/fragments/ActivityTwo.kt b/app/src/main/java/otus/gpb/homework/fragments/ActivityTwo.kt
new file mode 100644
index 0000000..e6ecb26
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/ActivityTwo.kt
@@ -0,0 +1,23 @@
+package otus.gpb.homework.fragments
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+
+class ActivityTwo : AppCompatActivity() {
+
+ private lateinit var fragmentB: FragmentB
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(R.layout.activity_two)
+
+ fragmentB = FragmentB()
+ supportFragmentManager.beginTransaction()
+ .replace(R.id.fragmentBContainer, fragmentB)
+ .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..100366f
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/FragmentA.kt
@@ -0,0 +1,57 @@
+package otus.gpb.homework.fragments
+
+import android.content.Context
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.activity.OnBackPressedCallback
+import otus.gpb.homework.fragments.databinding.FragmentABinding
+
+class FragmentA : Fragment() {
+
+ private lateinit var fragmentAA: FragmentAA
+ private lateinit var binding: FragmentABinding
+
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+
+ val callback = object : OnBackPressedCallback(true) {
+ override fun handleOnBackPressed() {
+ if (childFragmentManager.backStackEntryCount > 0) {
+ childFragmentManager.popBackStack()
+ } else {
+ isEnabled = false
+ @Suppress("DEPRECATION")
+ requireActivity().onBackPressed()
+ }
+ }
+ }
+
+ requireActivity().onBackPressedDispatcher.addCallback(callback)
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ // Inflate the layout for this fragment
+ binding = FragmentABinding.inflate(layoutInflater)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ binding.transitionToFragmentAA.setOnClickListener {
+ val generatedColor = ColorGenerator.generateColor()
+ fragmentAA = FragmentAA.newInstance(generatedColor)
+ childFragmentManager.beginTransaction()
+ .replace(R.id.fragment_a_container, fragmentAA)
+ .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..d66f312
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/FragmentAA.kt
@@ -0,0 +1,55 @@
+package otus.gpb.homework.fragments
+
+import android.os.Bundle
+import android.util.Log
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+
+class FragmentAA : Fragment() {
+
+ private var randomColor: Int = 0
+ private lateinit var fragmentAB: FragmentAB
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ randomColor = it.getInt(ARG_RAND_COLOR)
+ }
+ Log.i("myColor", randomColor.toString())
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_a_a, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ view.setBackgroundColor(randomColor)
+ fragmentAB = FragmentAB.newInstance(ColorGenerator.generateColor())
+ view.findViewById