diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e86faf7..f00c680 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -7,6 +7,10 @@ android { namespace = "com.alom.androidstudy1" compileSdk = 34 + buildFeatures{ + viewBinding = true + } + defaultConfig { applicationId = "com.alom.androidstudy1" minSdk = 26 diff --git a/app/src/main/java/com/alom/androidstudy1/MainActivity.kt b/app/src/main/java/com/alom/androidstudy1/MainActivity.kt index c1bcbbf..37f08c1 100644 --- a/app/src/main/java/com/alom/androidstudy1/MainActivity.kt +++ b/app/src/main/java/com/alom/androidstudy1/MainActivity.kt @@ -5,16 +5,30 @@ import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.alom.androidstudy1.databinding.ActivityMainBinding +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.launch class MainActivity : AppCompatActivity() { + private lateinit var binding: ActivityMainBinding + private lateinit var memoViewModel: MemoViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - enableEdgeToEdge() - setContentView(R.layout.activity_main) - ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> - val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) - v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) - insets + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + + memoViewModel = ViewModelProvider(this)[MemoViewModel::class.java] + + binding.btnSave.setOnClickListener{ + memoViewModel.updateMemo(binding.etText.text.toString()) + } + + lifecycleScope.launch { + memoViewModel.currentValue.collect{ + binding.etText.setText(it) + } } } } \ No newline at end of file diff --git a/app/src/main/java/com/alom/androidstudy1/MemoViewModel.kt b/app/src/main/java/com/alom/androidstudy1/MemoViewModel.kt new file mode 100644 index 0000000..a8ecd45 --- /dev/null +++ b/app/src/main/java/com/alom/androidstudy1/MemoViewModel.kt @@ -0,0 +1,27 @@ +package com.alom.androidstudy1 + +import android.app.Application +import android.content.Context +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow + +class MemoViewModel(application: Application) : AndroidViewModel(application) { + + private val preferenceUtil = PreferenceUtil(getApplication().applicationContext) + private val _currentValue = MutableStateFlow("") + + val currentValue: StateFlow = _currentValue + + init{ + _currentValue.value = preferenceUtil.getString("memo", "") + } + + fun updateMemo(newMemo: String) { + _currentValue.value = newMemo + preferenceUtil.setString("memo", newMemo) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/alom/androidstudy1/PreferenceUtil.kt b/app/src/main/java/com/alom/androidstudy1/PreferenceUtil.kt new file mode 100644 index 0000000..1291e50 --- /dev/null +++ b/app/src/main/java/com/alom/androidstudy1/PreferenceUtil.kt @@ -0,0 +1,17 @@ +package com.alom.androidstudy1 + +import android.content.Context +import android.content.SharedPreferences + +class PreferenceUtil(context: Context) { + private val prefs: SharedPreferences = + context.getSharedPreferences("MemoApplication", Context.MODE_PRIVATE) + + fun getString(key: String, defValue: String): String { + return prefs.getString(key, defValue).toString() + } + + fun setString(key: String, str: String) { + prefs.edit().putString(key, str).apply() + } +} \ 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 86a5d97..6ae8f5e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,13 +7,19 @@ android:layout_height="match_parent" tools:context=".MainActivity"> - + +