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
import android.view.MenuItem.OnActionExpandListener import android.view.MenuItem.OnActionExpandListener
import android.view.WindowManager import android.view.WindowManager
import androidx.activity.addCallback
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
@ -214,6 +215,9 @@ class PasswordStore : BaseGitActivity() {
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
refreshPasswordList() refreshPasswordList()
onBackPressedDispatcher.addCallback {
isEnabled = getPasswordFragment()?.onBackPressedInActivity() == true
}
} }
override fun onResume() { override fun onResume() {
@ -315,20 +319,12 @@ class PasswordStore : BaseGitActivity() {
} }
} }
R.id.refresh -> refreshPasswordList() R.id.refresh -> refreshPasswordList()
android.R.id.home -> { android.R.id.home -> onBackPressedDispatcher.onBackPressed()
@Suppress("DEPRECATION") onBackPressed()
}
else -> return super.onOptionsItemSelected(item) else -> return super.onOptionsItemSelected(item)
} }
return true return true
} }
@Deprecated("Deprecated in Java")
@Suppress("DEPRECATION")
override fun onBackPressed() {
if (getPasswordFragment()?.onBackPressedInActivity() != true) super.onBackPressed()
}
private fun getPasswordFragment(): PasswordFragment? { private fun getPasswordFragment(): PasswordFragment? {
return supportFragmentManager.findFragmentByTag(PASSWORD_FRAGMENT_TAG) as? 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.os.Bundle
import android.view.MenuItem import android.view.MenuItem
import androidx.activity.addCallback
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.BundleCompat import androidx.core.os.BundleCompat
import app.passwordstore.R import app.passwordstore.R
@ -95,6 +96,11 @@ class SettingsActivity : AppCompatActivity() {
binding.preferenceRecyclerView.adapter = adapter binding.preferenceRecyclerView.adapter = adapter
} }
override fun onStart() {
super.onStart()
onBackPressedDispatcher.addCallback { isEnabled = !preferencesAdapter.goBack() }
}
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState) super.onSaveInstanceState(outState)
outState.putParcelable("adapter", preferencesAdapter.getSavedState()) outState.putParcelable("adapter", preferencesAdapter.getSavedState())
@ -111,10 +117,4 @@ class SettingsActivity : AppCompatActivity() {
else -> super.onOptionsItemSelected(item) else -> super.onOptionsItemSelected(item)
} }
} }
@Deprecated("Deprecated in Java")
@Suppress("DEPRECATION")
override fun onBackPressed() {
if (!preferencesAdapter.goBack()) super.onBackPressed()
}
} }