Преглед на файлове

Bug fix on back pressed

sduduzog преди 7 години
родител
ревизия
f0ab2f5b24

+ 1 - 1
app/build.gradle

@@ -13,7 +13,7 @@ android {
         minSdkVersion 21
         targetSdkVersion 28
         versionCode 20
-        versionName "2.1.0"
+        versionName "2.1.1"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         vectorDrawables.useSupportLibrary = true
     }

+ 21 - 1
app/src/main/java/com/sduduzog/slimlauncher/MainActivity.kt

@@ -21,6 +21,26 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
     private lateinit var navigator: NavController
     var onBackPressedListener: OnBackPressedListener? = null
 
+
+    var dispatcher: Subject = object : Subject() {
+
+        var observers: MutableSet<Observer> = mutableSetOf()
+        override fun attachObserver(o: Observer) {
+            observers.add(o)
+        }
+
+        override fun detachObserver(o: Observer) {
+            observers.remove(o)
+        }
+
+        override fun notifyObservers() {
+            for (o in observers) {
+                o.update("onBackPressed")
+            }
+        }
+
+    }
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.main_activity)
@@ -51,7 +71,7 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh
     }
 
     override fun onBackPressed() {
-        onBackPressedListener?.onBackPressed()
+        dispatcher.notifyObservers()
         if (currentLabel != label)
             super.onBackPressed()
         else onBackPressedListener?.onBackPress()

+ 5 - 0
app/src/main/java/com/sduduzog/slimlauncher/Observer.kt

@@ -0,0 +1,5 @@
+package com.sduduzog.slimlauncher
+
+interface Observer {
+    fun update(on: String)
+}

+ 7 - 0
app/src/main/java/com/sduduzog/slimlauncher/OnBackPressedListener.java

@@ -0,0 +1,7 @@
+package com.sduduzog.slimlauncher;
+
+import org.jetbrains.annotations.NotNull;
+
+public class OnBackPressedListener {
+
+}

+ 7 - 0
app/src/main/java/com/sduduzog/slimlauncher/Subject.kt

@@ -0,0 +1,7 @@
+package com.sduduzog.slimlauncher
+
+abstract class Subject {
+    abstract fun attachObserver(o: Observer)
+    abstract fun detachObserver(o: Observer)
+    abstract fun notifyObservers()
+}

+ 9 - 5
app/src/main/java/com/sduduzog/slimlauncher/ui/main/notes/NoteFragment.kt

@@ -10,6 +10,7 @@ import android.view.inputmethod.InputMethodManager
 import androidx.fragment.app.Fragment
 import androidx.lifecycle.ViewModelProviders
 import com.sduduzog.slimlauncher.MainActivity
+import com.sduduzog.slimlauncher.Observer
 import com.sduduzog.slimlauncher.R
 import com.sduduzog.slimlauncher.data.Note
 import com.sduduzog.slimlauncher.ui.main.DoubleClickListener
@@ -18,7 +19,7 @@ import java.security.MessageDigest
 import java.util.*
 
 
-class NoteFragment : Fragment(), MainActivity.OnBackPressedListener {
+class NoteFragment : Fragment(), Observer {
 
     private lateinit var note: Note
     private lateinit var viewModel: NotesViewModel
@@ -74,15 +75,18 @@ class NoteFragment : Fragment(), MainActivity.OnBackPressedListener {
     override fun onAttach(context: Context?) {
         super.onAttach(context)
         with(context as MainActivity) {
-            this.onBackPressedListener = this@NoteFragment
+            this.dispatcher.attachObserver(this@NoteFragment)
         }
     }
 
-    override fun onBackPress() {
-        // Do nothing
+    override fun onDetach() {
+        super.onDetach()
+        with(context as MainActivity) {
+            this.dispatcher.detachObserver(this@NoteFragment)
+        }
     }
 
-    override fun onBackPressed() {
+    override fun update(on: String) {
         saveNote()
     }