Fixed crash when going back while on call Activity
This commit is contained in:
parent
86d5991fa9
commit
30009e56fa
4 changed files with 27 additions and 5 deletions
|
@ -29,12 +29,13 @@ import androidx.databinding.DataBindingUtil
|
||||||
import androidx.databinding.ViewDataBinding
|
import androidx.databinding.ViewDataBinding
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
|
import org.linphone.core.tools.Log
|
||||||
|
|
||||||
abstract class GenericFragment<T : ViewDataBinding> : Fragment() {
|
abstract class GenericFragment<T : ViewDataBinding> : Fragment() {
|
||||||
private var _binding: T? = null
|
private var _binding: T? = null
|
||||||
protected val binding get() = _binding!!
|
protected val binding get() = _binding!!
|
||||||
|
|
||||||
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
|
protected val onBackPressedCallback = object : OnBackPressedCallback(true) {
|
||||||
override fun handleOnBackPressed() {
|
override fun handleOnBackPressed() {
|
||||||
goBack()
|
goBack()
|
||||||
}
|
}
|
||||||
|
@ -63,11 +64,17 @@ abstract class GenericFragment<T : ViewDataBinding> : Fragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected open fun goBack() {
|
protected open fun goBack() {
|
||||||
if (!findNavController().popBackStack()) {
|
try {
|
||||||
if (!findNavController().navigateUp()) {
|
if (!findNavController().popBackStack()) {
|
||||||
onBackPressedCallback.isEnabled = false
|
if (!findNavController().navigateUp()) {
|
||||||
requireActivity().onBackPressed()
|
onBackPressedCallback.isEnabled = false
|
||||||
|
requireActivity().onBackPressed()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (ise: IllegalStateException) {
|
||||||
|
Log.e("[Generic Fragment] Can't go back: $ise")
|
||||||
|
onBackPressedCallback.isEnabled = false
|
||||||
|
requireActivity().onBackPressed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,6 +181,11 @@ class ControlsFragment : GenericFragment<CallControlsFragmentBinding>() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
onBackPressedCallback.isEnabled = false
|
||||||
|
}
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
initNumpadLayout()
|
initNumpadLayout()
|
||||||
|
|
|
@ -40,4 +40,9 @@ class StatisticsFragment : GenericFragment<CallStatisticsFragmentBinding>() {
|
||||||
viewModel = ViewModelProvider(this).get(StatisticsListViewModel::class.java)
|
viewModel = ViewModelProvider(this).get(StatisticsListViewModel::class.java)
|
||||||
binding.viewModel = viewModel
|
binding.viewModel = viewModel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
onBackPressedCallback.isEnabled = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,6 +71,11 @@ class StatusFragment : GenericFragment<CallStatusFragmentBinding>() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
onBackPressedCallback.isEnabled = false
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
if (zrtpDialog != null) {
|
if (zrtpDialog != null) {
|
||||||
zrtpDialog?.dismiss()
|
zrtpDialog?.dismiss()
|
||||||
|
|
Loading…
Reference in a new issue