android - 使用 NavController 导航时只允许一个实例
问题描述
我目前在我的项目中使用 Android 导航架构。它具有可以使用快捷方式启动任何片段的功能。目前我正在使用 NavController 在单击快捷方式时导航到所需的目的地。但是当我多次单击快捷方式时,每次都会创建一个新的片段实例。所以,我的问题是,有没有办法在使用 NavController 导航到片段时只接受一个片段实例?我在谷歌上搜索了很多次,但一无所获。提前致谢。
解决方案
您可以使用 safeOnClickListener 而不是默认的 onClickListener 来捕获点击快捷方式,因此基本上使用 safeOnClickListener 您可以忽略给定持续时间的所有点击事件。
class SafeClickListener(
private var defaultInterval: Int = 2000,
private val onSafeCLick: (View) -> Unit
) : View.OnClickListener {
private var lastTimeClicked: Long = 0
override fun onClick(v: View) {
if (SystemClock.elapsedRealtime() - lastTimeClicked < defaultInterval) {
return
}
lastTimeClicked = SystemClock.elapsedRealtime()
onSafeCLick(v)
}
}
fun View.setSafeOnClickListener(delay: Int = 2000, onSafeClick: (View) -> Unit) {
val safeClickListener = SafeClickListener(delay) {
onSafeClick(it)
}
setOnClickListener(safeClickListener)
}
推荐阅读
- firebase - 使用 Firebase_Arduino_WiFiNINA 从 Arduino 连接到 Firebase 时出错
- kubernetes - 如何避免 K8s 在启动时杀死 pod
- sql-server - 将 SELECT 连接到 SQL Server 中的一列
- excel - 无法填充命名范围
- python-3.x - Python-Time Series 如何获取特定周的预测值
- c++ - 在这段代码中,为什么 1/2 和 0.5 的行为不同?
- python - 数据框连接
- jquery - 屏幕分辨率更改时调整图像大小以适合 div
- python - Python/Pandas,根据多个值计算特定值
- oracle - 如何将具有日期数据类型的列格式化为 YYYY-MM-DD