@@ -16,6 +16,8 @@ import android.view.ViewGroup
16
16
import android.view.animation.Animation
17
17
import android.view.animation.AnimationUtils
18
18
import android.widget.Toast
19
+ import androidx.activity.OnBackPressedCallback
20
+ import androidx.activity.addCallback
19
21
import androidx.activity.result.contract.ActivityResultContracts
20
22
import androidx.appcompat.app.AppCompatActivity
21
23
import androidx.appcompat.view.ActionMode
@@ -46,6 +48,7 @@ import kotlinx.coroutines.launch
46
48
class TunnelListFragment : BaseFragment () {
47
49
private val actionModeListener = ActionModeListener ()
48
50
private var actionMode: ActionMode ? = null
51
+ private var backPressedCallback: OnBackPressedCallback ? = null
49
52
private var binding: TunnelListFragmentBinding ? = null
50
53
private val tunnelFileImportResultLauncher = registerForActivityResult(ActivityResultContracts .GetContent ()) { data ->
51
54
if (data == null ) return @registerForActivityResult
@@ -114,6 +117,9 @@ class TunnelListFragment : BaseFragment() {
114
117
}
115
118
executePendingBindings()
116
119
}
120
+ backPressedCallback = requireActivity().onBackPressedDispatcher.addCallback(this ) { actionMode?.finish() }
121
+ backPressedCallback?.isEnabled = false
122
+
117
123
return binding?.root
118
124
}
119
125
@@ -238,6 +244,7 @@ class TunnelListFragment : BaseFragment() {
238
244
239
245
override fun onCreateActionMode (mode : ActionMode , menu : Menu ): Boolean {
240
246
actionMode = mode
247
+ backPressedCallback?.isEnabled = true
241
248
if (activity != null ) {
242
249
resources = activity!! .resources
243
250
}
@@ -249,6 +256,7 @@ class TunnelListFragment : BaseFragment() {
249
256
250
257
override fun onDestroyActionMode (mode : ActionMode ) {
251
258
actionMode = null
259
+ backPressedCallback?.isEnabled = false
252
260
resources = null
253
261
animateFab(binding?.createFab, true )
254
262
checkedItems.clear()
0 commit comments