From 875c1542ea3ac195fbf5b21125c51c472b4cb4f3 Mon Sep 17 00:00:00 2001 From: andrekir Date: Sat, 12 Feb 2022 18:54:10 -0300 Subject: [PATCH] catch snackbar exception --- .../java/com/geeksville/mesh/MainActivity.kt | 38 +++++++++++-------- .../geeksville/mesh/ui/SettingsFragment.kt | 35 +++++++++-------- 2 files changed, 42 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index 34a36b807..044dbf6f9 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -737,24 +737,32 @@ class MainActivity : AppCompatActivity(), Logging, } private fun showSnackbar(msgId: Int) { - Snackbar.make( - findViewById(android.R.id.content), - msgId, - Snackbar.LENGTH_LONG - ).show() + try { + Snackbar.make( + findViewById(android.R.id.content), + msgId, + Snackbar.LENGTH_LONG + ).show() + } catch (ex: IllegalStateException) { + reportError("Snackbar couldn't find view for msgId $msgId") + } } private fun showSnackbar(msg: String) { - Snackbar.make( - findViewById(android.R.id.content), - msg, - Snackbar.LENGTH_INDEFINITE - ) - .apply { view.findViewById(R.id.snackbar_text).isSingleLine = false } - .setAction(R.string.okay) { - // dismiss - } - .show() + try { + Snackbar.make( + findViewById(android.R.id.content), + msg, + Snackbar.LENGTH_INDEFINITE + ) + .apply { view.findViewById(R.id.snackbar_text).isSingleLine = false } + .setAction(R.string.okay) { + // dismiss + } + .show() + } catch (ex: IllegalStateException) { + reportError("Snackbar couldn't find view for msgString $msg") + } } fun perhapsChangeChannel(url: Uri? = requestedChannelUrl) { diff --git a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt index fd2d82bc8..116d5f3ea 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt @@ -952,13 +952,7 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { fun weNeedAccess(warningReason: String) { warn("Telling user we need need location access") - - Snackbar.make(requireView(), warningReason, Snackbar.LENGTH_INDEFINITE) - .apply { view.findViewById(R.id.snackbar_text).isSingleLine = false } - .setAction(R.string.okay) { - // dismiss - } - .show() + showSnackbar(warningReason) } locationSettingsResponse.addOnSuccessListener { @@ -1001,6 +995,23 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { } } + private fun showSnackbar(msg: String) { + try { + Snackbar.make( + requireView(), + msg, + Snackbar.LENGTH_INDEFINITE + ) + .apply { view.findViewById(R.id.snackbar_text).isSingleLine = false } + .setAction(R.string.okay) { + // dismiss + } + .show() + } catch (ex: IllegalStateException) { + reportError("Snackbar couldn't find view for msgString $msg") + } + } + override fun onPause() { super.onPause() @@ -1022,15 +1033,7 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { if (!hasUSB) { // Warn user if BLE is disabled if (scanModel.bluetoothAdapter?.isEnabled != true) { - Snackbar.make( - requireView(), - R.string.error_bluetooth, - Snackbar.LENGTH_INDEFINITE - ) - .setAction(R.string.okay) { - // dismiss - } - .show() + showSnackbar(getString(R.string.error_bluetooth)) } else { if (binding.provideLocationCheckbox.isChecked) checkLocationEnabled(getString(R.string.location_disabled))