refactor: properly use OnBackPressedDispatcher

This commit is contained in:
Harsh Shandilya 2024-01-22 00:03:09 +05:30
parent 964059e0da
commit 7c9e563d96
2 changed files with 11 additions and 15 deletions

View file

@ -13,6 +13,7 @@ import android.view.Menu
import android.view.MenuItem
import android.view.MenuItem.OnActionExpandListener
import android.view.WindowManager
import androidx.activity.addCallback
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
import androidx.activity.viewModels
import androidx.appcompat.widget.SearchView
@ -214,6 +215,9 @@ class PasswordStore : BaseGitActivity() {
override fun onStart() {
super.onStart()
refreshPasswordList()
onBackPressedDispatcher.addCallback {
isEnabled = getPasswordFragment()?.onBackPressedInActivity() == true
}
}
override fun onResume() {
@ -315,20 +319,12 @@ class PasswordStore : BaseGitActivity() {
}
}
R.id.refresh -> refreshPasswordList()
android.R.id.home -> {
@Suppress("DEPRECATION") onBackPressed()
}
android.R.id.home -> onBackPressedDispatcher.onBackPressed()
else -> return super.onOptionsItemSelected(item)
}
return true
}
@Deprecated("Deprecated in Java")
@Suppress("DEPRECATION")
override fun onBackPressed() {
if (getPasswordFragment()?.onBackPressedInActivity() != true) super.onBackPressed()
}
private fun getPasswordFragment(): PasswordFragment? {
return supportFragmentManager.findFragmentByTag(PASSWORD_FRAGMENT_TAG) as? PasswordFragment
}

View file

@ -7,6 +7,7 @@ package app.passwordstore.ui.settings
import android.os.Bundle
import android.view.MenuItem
import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.BundleCompat
import app.passwordstore.R
@ -95,6 +96,11 @@ class SettingsActivity : AppCompatActivity() {
binding.preferenceRecyclerView.adapter = adapter
}
override fun onStart() {
super.onStart()
onBackPressedDispatcher.addCallback { isEnabled = !preferencesAdapter.goBack() }
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putParcelable("adapter", preferencesAdapter.getSavedState())
@ -111,10 +117,4 @@ class SettingsActivity : AppCompatActivity() {
else -> super.onOptionsItemSelected(item)
}
}
@Deprecated("Deprecated in Java")
@Suppress("DEPRECATION")
override fun onBackPressed() {
if (!preferencesAdapter.goBack()) super.onBackPressed()
}
}