Fix crash in SmartSnackbar
This commit is contained in:
@@ -57,7 +57,7 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
|
|||||||
badge.badgeGravity = Gravity.TOP or Gravity.CENTER_HORIZONTAL
|
badge.badgeGravity = Gravity.TOP or Gravity.CENTER_HORIZONTAL
|
||||||
badge.setGravityOffset(16f, 0f, true)
|
badge.setGravityOffset(16f, 0f, true)
|
||||||
ServiceForegroundConnector(this, this, ClientMonitorService::class)
|
ServiceForegroundConnector(this, this, ClientMonitorService::class)
|
||||||
SmartSnackbar.Register(binding.fragmentHolder)
|
SmartSnackbar.Register(lifecycle, binding.fragmentHolder)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onNavigationItemSelected(item: MenuItem) = when (item.itemId) {
|
override fun onNavigationItemSelected(item: MenuItem) = when (item.itemId) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package be.mygod.vpnhotspot.widget
|
package be.mygod.vpnhotspot.widget
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.os.Looper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
@@ -21,8 +22,10 @@ sealed class SmartSnackbar {
|
|||||||
fun make(@StringRes text: Int): SmartSnackbar = make(app.getText(text))
|
fun make(@StringRes text: Int): SmartSnackbar = make(app.getText(text))
|
||||||
fun make(text: CharSequence? = ""): SmartSnackbar {
|
fun make(text: CharSequence? = ""): SmartSnackbar {
|
||||||
val holder = holder
|
val holder = holder
|
||||||
return if (holder == null) ToastWrapper(Toast.makeText(app, text, Toast.LENGTH_LONG)) else
|
return if (holder == null) {
|
||||||
SnackbarWrapper(Snackbar.make(holder, text ?: null.toString(), Snackbar.LENGTH_LONG))
|
if (Looper.myLooper() == null) Looper.prepare()
|
||||||
|
ToastWrapper(Toast.makeText(app, text, Toast.LENGTH_LONG))
|
||||||
|
} else SnackbarWrapper(Snackbar.make(holder, text ?: null.toString(), Snackbar.LENGTH_LONG))
|
||||||
}
|
}
|
||||||
fun make(e: Throwable) = make(when (e) {
|
fun make(e: Throwable) = make(when (e) {
|
||||||
is NoShellException -> app.getText(R.string.root_unavailable)
|
is NoShellException -> app.getText(R.string.root_unavailable)
|
||||||
@@ -30,9 +33,9 @@ sealed class SmartSnackbar {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
class Register(private val view: View) : LifecycleObserver {
|
class Register(lifecycle: Lifecycle, private val view: View) : LifecycleObserver {
|
||||||
init {
|
init {
|
||||||
(view.context as LifecycleOwner).lifecycle.addObserver(this)
|
lifecycle.addObserver(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
|
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
|
||||||
@@ -54,9 +57,7 @@ private class SnackbarWrapper(private val snackbar: Snackbar) : SmartSnackbar()
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class ToastWrapper(private val toast: Toast) : SmartSnackbar() {
|
private class ToastWrapper(private val toast: Toast) : SmartSnackbar() {
|
||||||
override fun show() {
|
override fun show() = toast.show()
|
||||||
app.handler.post(toast::show)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun shortToast() = apply { toast.duration = Toast.LENGTH_SHORT }
|
override fun shortToast() = apply { toast.duration = Toast.LENGTH_SHORT }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user