Replace deprecated onBackPressed with callback

This commit is contained in:
Niko Diamadis
2023-07-18 14:48:38 +02:00
parent d3183bf37b
commit 70c7375abb
2 changed files with 21 additions and 7 deletions

View File

@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<manifest
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
@@ -16,8 +18,10 @@
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:enableOnBackInvokedCallback="true"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme.SplashScreen">
android:theme="@style/AppTheme.SplashScreen"
tools:targetApi="tiramisu">
<activity
android:name=".init.InitializationActivity"
android:exported="true"

View File

@@ -15,6 +15,7 @@ import android.view.MenuItem
import android.view.View
import android.widget.ImageButton
import android.widget.TextView
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
@@ -68,6 +69,7 @@ internal class MessagesActivity :
private var isLoadMore = false
private var updateAppOnDrawerClose: Long? = null
private lateinit var listMessageAdapter: ListMessageAdapter
private lateinit var onBackPressedCallback: OnBackPressedCallback
private val receiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
@@ -108,6 +110,7 @@ internal class MessagesActivity :
listAnimation
)
}
addBackPressCallback()
messagesView.addItemDecoration(dividerItemDecoration)
messagesView.setHasFixedSize(true)
@@ -126,6 +129,9 @@ internal class MessagesActivity :
swipeRefreshLayout.setOnRefreshListener { onRefresh() }
binding.drawerLayout.addDrawerListener(
object : SimpleDrawerListener() {
override fun onDrawerOpened(drawerView: View) {
onBackPressedCallback.isEnabled = true
}
override fun onDrawerClosed(drawerView: View) {
updateAppOnDrawerClose?.let { selectApp ->
updateAppOnDrawerClose = null
@@ -135,6 +141,7 @@ internal class MessagesActivity :
}
invalidateOptionsMenu()
}
onBackPressedCallback.isEnabled = false
}
}
)
@@ -242,13 +249,16 @@ internal class MessagesActivity :
refreshAll.setOnClickListener { refreshAll() }
}
override fun onBackPressed() {
private fun addBackPressCallback() {
onBackPressedCallback = object : OnBackPressedCallback(false) {
override fun handleOnBackPressed() {
if (binding.drawerLayout.isDrawerOpen(GravityCompat.START)) {
binding.drawerLayout.closeDrawer(GravityCompat.START)
} else {
super.onBackPressed()
}
}
}
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
// Handle navigation view item clicks here.