From 2777304cafc3600347ed1a29a66437cc86df8121 Mon Sep 17 00:00:00 2001 From: nikolay Date: Sat, 10 Aug 2024 18:17:11 +0300 Subject: [PATCH 01/36] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B1=D1=83=D1=8E=20?= =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D1=82=D1=8C=20=D1=82=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=BA=D0=BE=20=D0=BE=D0=B4=D0=BD=D1=83=20=D0=B2=D1=8C?= =?UTF-8?q?=D1=8E=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 9 +++++- app/src/main/AndroidManifest.xml | 10 +++++-- .../ru/otus/basicarchitecture/MainActivity.kt | 11 -------- .../presentation/Fragment1.kt | 28 +++++++++++++++++++ .../presentation/Fragment1ViewModel.kt | 10 +++++++ .../presentation/MainActivity.kt | 24 ++++++++++++++++ .../presentation/MainViewModel.kt | 13 +++++++++ .../presentation/MainViewState.kt | 5 ++++ app/src/main/res/layout/activity_main.xml | 7 ++++- .../main/res/layout/fragment_fragment1.xml | 13 +++++++++ app/src/main/res/values/themes.xml | 2 +- 11 files changed, 116 insertions(+), 16 deletions(-) delete mode 100644 app/src/main/java/ru/otus/basicarchitecture/MainActivity.kt create mode 100644 app/src/main/java/ru/otus/basicarchitecture/presentation/Fragment1.kt create mode 100644 app/src/main/java/ru/otus/basicarchitecture/presentation/Fragment1ViewModel.kt create mode 100644 app/src/main/java/ru/otus/basicarchitecture/presentation/MainActivity.kt create mode 100644 app/src/main/java/ru/otus/basicarchitecture/presentation/MainViewModel.kt create mode 100644 app/src/main/java/ru/otus/basicarchitecture/presentation/MainViewState.kt create mode 100644 app/src/main/res/layout/fragment_fragment1.xml diff --git a/app/build.gradle b/app/build.gradle index 9c99d98..1a8dc56 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ plugins { android { namespace 'ru.otus.basicarchitecture' - compileSdk 33 + compileSdk 34 defaultConfig { applicationId "ru.otus.basicarchitecture" @@ -38,7 +38,14 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.fragment:fragment-ktx:1.5.6' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + + def lifecycle_version = "2.6.1" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" + implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version" + implementation 'androidx.activity:activity-ktx:1.7.2' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1e81fea..49031df 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,8 +13,14 @@ android:theme="@style/Theme.BasicArchitecture" tools:targetApi="31"> + android:name=".presentation.MainActivity" + android:exported="true"> + + + + + + \ No newline at end of file diff --git a/app/src/main/java/ru/otus/basicarchitecture/MainActivity.kt b/app/src/main/java/ru/otus/basicarchitecture/MainActivity.kt deleted file mode 100644 index 623aba9..0000000 --- a/app/src/main/java/ru/otus/basicarchitecture/MainActivity.kt +++ /dev/null @@ -1,11 +0,0 @@ -package ru.otus.basicarchitecture - -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle - -class MainActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - } -} \ No newline at end of file diff --git a/app/src/main/java/ru/otus/basicarchitecture/presentation/Fragment1.kt b/app/src/main/java/ru/otus/basicarchitecture/presentation/Fragment1.kt new file mode 100644 index 0000000..3cc6bfd --- /dev/null +++ b/app/src/main/java/ru/otus/basicarchitecture/presentation/Fragment1.kt @@ -0,0 +1,28 @@ +package ru.otus.basicarchitecture.presentation + +import androidx.fragment.app.viewModels +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import ru.otus.basicarchitecture.R + +class Fragment1 : Fragment() { + + private val viewModel: Fragment1ViewModel by viewModels() + + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + return inflater.inflate(R.layout.fragment_fragment1, container, false) + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/otus/basicarchitecture/presentation/Fragment1ViewModel.kt b/app/src/main/java/ru/otus/basicarchitecture/presentation/Fragment1ViewModel.kt new file mode 100644 index 0000000..ea40adf --- /dev/null +++ b/app/src/main/java/ru/otus/basicarchitecture/presentation/Fragment1ViewModel.kt @@ -0,0 +1,10 @@ +package ru.otus.basicarchitecture.presentation + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel + +class Fragment1ViewModel : ViewModel() { + private val _state = MutableLiveData() + val viewState: LiveData = _state +} \ No newline at end of file diff --git a/app/src/main/java/ru/otus/basicarchitecture/presentation/MainActivity.kt b/app/src/main/java/ru/otus/basicarchitecture/presentation/MainActivity.kt new file mode 100644 index 0000000..52b151a --- /dev/null +++ b/app/src/main/java/ru/otus/basicarchitecture/presentation/MainActivity.kt @@ -0,0 +1,24 @@ +package ru.otus.basicarchitecture.presentation + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import androidx.activity.viewModels +import androidx.fragment.app.Fragment +import ru.otus.basicarchitecture.R + +class MainActivity : AppCompatActivity() { + + private val viewModel: MainViewModel by viewModels() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + loadFragment(Fragment1()) + + } + private fun loadFragment(fragment: Fragment) { + val transaction = supportFragmentManager.beginTransaction() + transaction.replace(R.id.fragment_container, fragment) + transaction.addToBackStack("af") // Добавляем в стек для навигации + transaction.commit() + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/otus/basicarchitecture/presentation/MainViewModel.kt b/app/src/main/java/ru/otus/basicarchitecture/presentation/MainViewModel.kt new file mode 100644 index 0000000..4d55ed7 --- /dev/null +++ b/app/src/main/java/ru/otus/basicarchitecture/presentation/MainViewModel.kt @@ -0,0 +1,13 @@ +package ru.otus.basicarchitecture.presentation + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel + +class MainViewModel : ViewModel() { + private val _state = MutableLiveData() + val viewState: LiveData = _state +// private val _state = MutableLiveData() +// val viewState: LiveData = _state + +} \ No newline at end of file diff --git a/app/src/main/java/ru/otus/basicarchitecture/presentation/MainViewState.kt b/app/src/main/java/ru/otus/basicarchitecture/presentation/MainViewState.kt new file mode 100644 index 0000000..ec616b3 --- /dev/null +++ b/app/src/main/java/ru/otus/basicarchitecture/presentation/MainViewState.kt @@ -0,0 +1,5 @@ +package ru.otus.basicarchitecture.presentation +data class MainViewState( + val isProgress: Boolean = false, + val currentWater: String = "" +) \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0b15a20..5e17fd7 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,6 +4,11 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".MainActivity"> + tools:context=".presentation.MainActivity"> + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_fragment1.xml b/app/src/main/res/layout/fragment_fragment1.xml new file mode 100644 index 0000000..c139a4e --- /dev/null +++ b/app/src/main/res/layout/fragment_fragment1.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 0ab4563..c333b04 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,6 +1,6 @@ -