Fixed back handler when resuming from background

pull/3336/head
Alex Baker 10 months ago
parent 77eaf219b4
commit 00fadd10e1

@ -188,6 +188,7 @@ class MainActivity : AppCompatActivity() {
} }
BackHandler(enabled = state.task == null) { BackHandler(enabled = state.task == null) {
Timber.d("onBackPressed")
if (intent.finishAffinity) { if (intent.finishAffinity) {
finishAffinity() finishAffinity()
} else if (isDetailVisible && navigator.canNavigateBack()) { } else if (isDetailVisible && navigator.canNavigateBack()) {
@ -212,17 +213,16 @@ class MainActivity : AppCompatActivity() {
directive = navigator.scaffoldDirective, directive = navigator.scaffoldDirective,
value = navigator.scaffoldValue, value = navigator.scaffoldValue,
listPane = { listPane = {
val taskListState = key (state.filter) { key (state.filter) {
rememberFragmentState()
}
AndroidFragment<TaskListFragment>( AndroidFragment<TaskListFragment>(
fragmentState = taskListState, fragmentState = rememberFragmentState(),
arguments = remember (state.filter) { arguments = remember(state.filter) {
Bundle() Bundle()
.apply { putParcelable(EXTRA_FILTER, state.filter) } .apply { putParcelable(EXTRA_FILTER, state.filter) }
}, },
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
) )
}
}, },
detailPane = { detailPane = {
if (state.task == null) { if (state.task == null) {
@ -240,21 +240,17 @@ class MainActivity : AppCompatActivity() {
} }
} }
} else { } else {
val taskEditState = key (state.task) { key (state.task) {
rememberFragmentState()
}
AndroidFragment<TaskEditFragment>( AndroidFragment<TaskEditFragment>(
fragmentState = taskEditState, fragmentState = rememberFragmentState(),
arguments = remember(state.task) { arguments = remember(state.task) {
Bundle() Bundle()
.apply { putParcelable(EXTRA_TASK, state.task) } .apply { putParcelable(EXTRA_TASK, state.task) }
}, },
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
onUpdate = {
Timber.d("On updated")
}
) )
} }
}
}, },
) )

@ -20,7 +20,7 @@ import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.activity.addCallback import androidx.activity.compose.BackHandler
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
@ -274,11 +274,6 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
@OptIn(ExperimentalPermissionsApi::class) @OptIn(ExperimentalPermissionsApi::class)
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
requireActivity().onBackPressedDispatcher.addCallback(owner = viewLifecycleOwner) {
if (search.isActionViewExpanded) {
search.collapseActionView()
}
}
binding = FragmentTaskListBinding.inflate(inflater, container, false) binding = FragmentTaskListBinding.inflate(inflater, container, false)
ViewCompat.setOnApplyWindowInsetsListener(binding.toolbar) { view, windowInsets -> ViewCompat.setOnApplyWindowInsetsListener(binding.toolbar) { view, windowInsets ->
@ -355,7 +350,14 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
binding.banner.setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) binding.banner.setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
binding.banner.setContent { binding.banner.setContent {
val context = LocalContext.current val context = LocalContext.current
val mainActivityState = mainViewModel.state.collectAsStateWithLifecycle().value
val state = listViewModel.state.collectAsStateWithLifecycle().value val state = listViewModel.state.collectAsStateWithLifecycle().value
BackHandler(enabled = state.searchQuery != null && mainActivityState.task == null) {
Timber.d("onBackPressed")
if (search.isActionViewExpanded) {
search.collapseActionView()
}
}
TasksTheme(theme = theme.themeBase.index) { TasksTheme(theme = theme.themeBase.index) {
val notificationPermissions = if (AndroidUtilities.atLeastTiramisu()) { val notificationPermissions = if (AndroidUtilities.atLeastTiramisu()) {
rememberPermissionState( rememberPermissionState(

@ -35,6 +35,7 @@ import org.tasks.fragments.CommentBarFragment
import org.tasks.themes.TasksTheme import org.tasks.themes.TasksTheme
import org.tasks.ui.TaskEditViewModel import org.tasks.ui.TaskEditViewModel
import org.tasks.utility.copyToClipboard import org.tasks.utility.copyToClipboard
import timber.log.Timber
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
@ -51,6 +52,7 @@ fun TaskEditScreen(
content: @Composable (Int) -> Unit, content: @Composable (Int) -> Unit,
) { ) {
BackHandler { BackHandler {
Timber.d("onBackPressed")
onBackPressed() onBackPressed()
} }
Scaffold( Scaffold(

Loading…
Cancel
Save