diff --git a/app/build.gradle b/app/build.gradle
index c5cf1b8..44c4f89 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -3,12 +3,8 @@ plugins {
id 'org.jetbrains.kotlin.android'
}
-kotlin {
- jvmToolchain(17)
-}
-
android {
- compileSdk 34
+ compileSdk 35
namespace "otus.gpb.homework.fragments"
defaultConfig {
@@ -34,15 +30,20 @@ android {
kotlinOptions {
jvmTarget = '17'
}
+
+ buildFeatures {
+ viewBinding = true
+ }
}
dependencies {
- implementation 'androidx.core:core-ktx:1.7.0'
- 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.core:core-ktx:1.16.0'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'com.google.android.material:material:1.12.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
+ implementation 'androidx.fragment:fragment-ktx:1.8.6'
testImplementation 'junit:junit:4.13.2'
- androidTestImplementation 'androidx.test.ext:junit:1.1.3'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+ androidTestImplementation 'androidx.test.ext:junit:1.2.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9604b34..c8e63bf 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,6 +21,14 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt b/app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt
new file mode 100644
index 0000000..2525e79
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/ActivityA.kt
@@ -0,0 +1,20 @@
+package otus.gpb.homework.fragments
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+
+class ActivityA : AppCompatActivity() {
+
+ private lateinit var fragmentA: FragmentA
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_a)
+ if (savedInstanceState == null) {
+ fragmentA = FragmentA()
+ supportFragmentManager.beginTransaction()
+ .replace(R.id.activity_a_container, fragmentA)
+ .commit()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt b/app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt
new file mode 100644
index 0000000..b09523a
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/ActivityB.kt
@@ -0,0 +1,42 @@
+package otus.gpb.homework.fragments
+
+import android.content.res.Configuration
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+
+class ActivityB : AppCompatActivity() {
+ private val saveColor = "saveColor"
+ private var baColor: Int = 0
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_b)
+
+ if (savedInstanceState != null) {
+ baColor = savedInstanceState.getInt(saveColor)
+ }
+
+ val fba = FragmentBA()
+
+ if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
+ supportFragmentManager.beginTransaction()
+ .replace(R.id.activity_ba_container, fba)
+ .replace(R.id.activity_bb_container, FragmentBB())
+ .commit()
+ } else {
+ supportFragmentManager.beginTransaction()
+ .replace(R.id.activity_b_container, fba)
+ .commit()
+ }
+
+ fba.sendColor(baColor)
+ supportFragmentManager.observeColor(this) {color ->
+ baColor = color
+ }
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ outState.putInt(saveColor, baColor)
+ }
+}
\ 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..cbb1da6
--- /dev/null
+++ b/app/src/main/java/otus/gpb/homework/fragments/FragmentA.kt
@@ -0,0 +1,50 @@
+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 android.widget.Button
+import androidx.activity.OnBackPressedCallback
+import otus.gpb.homework.fragments.ColorGenerator.generateColor
+
+class FragmentA : Fragment() {
+
+ 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? {
+ return inflater.inflate(R.layout.fragment_a, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ view.findViewById