【发布时间】:2020-07-24 02:27:21
【问题描述】:
在某些项目中我们使用导航架构组件,在导航图中我们添加了具有全局操作的 Fragment,但问题是当快速单击按钮多次后导航到 Fragment - 片段打开多次。
我有一些方法可以解决这个问题:
class SafeClickListener( private var defaultIntervalMs: Long = 1000, private val onSafeCLick: (View) -> Unit ) : View.OnClickListener { private var lastTimeClicked: Long = 0 override fun onClick(v: View) { if (SystemClock.elapsedRealtime() - lastTimeClicked < defaultIntervalMs) { return } lastTimeClicked = SystemClock.elapsedRealtime() onSafeCLick(v) } }在全局操作中使用
app:launchSingleTop="true",但我们仍然可以看到多个Fragments是如何打开的(这个解决方案只解决了popBackStack问题)使用自定义片段导航器,例如,我们将自定义属性“mustBeOnce”添加到目标,并在覆盖的方法
navigate()中检查此目标是否已在我们的后台堆栈中。
谁能想到其他解决方案?...
【问题讨论】:
标签: android navigation-architecture