Bladeren bron

Fixed back button issue#2

sduduzog 7 jaren geleden
bovenliggende
commit
b7fe98ccf9
1 gewijzigde bestanden met toevoegingen van 16 en 9 verwijderingen
  1. 16 9
      app/src/main/java/com/sduduzog/slimlauncher/MainActivity.kt

+ 16 - 9
app/src/main/java/com/sduduzog/slimlauncher/MainActivity.kt

@@ -4,22 +4,24 @@ import android.content.SharedPreferences
 import android.content.res.Resources
 import android.os.Bundle
 import android.support.v7.app.AppCompatActivity
-import androidx.navigation.Navigation
+import androidx.navigation.NavController
+import androidx.navigation.NavDestination
 import androidx.navigation.Navigation.findNavController
 
 
-class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceChangeListener {
+class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceChangeListener, NavController.OnNavigatedListener {
+
+    private lateinit var settings: SharedPreferences
+    private val label = "main_fragment"
+    private lateinit var currentLabel: String
 
-private lateinit var settings: SharedPreferences
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.main_activity)
         settings = getSharedPreferences("settings", MODE_PRIVATE)
         settings.registerOnSharedPreferenceChangeListener(this)
-    }
-
-    override fun onSupportNavigateUp(): Boolean {
-        return findNavController(this, R.id.nav_host_fragment).navigateUp()
+        val navigator = findNavController(this, R.id.nav_host_fragment)
+        navigator.addOnNavigatedListener(this)
     }
 
     override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, s: String?) {
@@ -40,7 +42,12 @@ private lateinit var settings: SharedPreferences
     }
 
     override fun onBackPressed() {
-        val nav = Navigation.findNavController(this, R.id.nav_host_fragment)
-        nav.navigateUp()
+        if (currentLabel != label)
+            super.onBackPressed()
     }
+
+    override fun onNavigated(controller: NavController, destination: NavDestination) {
+        currentLabel = destination.label.toString()
+    }
+
 }