防止或避免 Android 应用程序中的多次点击(Kotlin 语言)

Cod*_*fee 6 android onclick android-fragments android-activity kotlin

如何防止用户多次点击一个按钮?

实际问题:如果用户不断快速单击按钮。单击按钮多次执行我的 api 调用。

应用的解决方案不起作用:即使您尝试在 onClick() 之后直接禁用按钮,仍然有可能发生多次单击。

Cod*_*fee 15

解决Android多次点击问题 \xe2\x80\x94 Kotlin

\n

我搜索了社区并找到了惊人的解决方案,例如创建一个自定义点击侦听器,它将保留最后一次点击时间并防止在特定时间段内点击\n但是 \xe2\x80\x94 作为 Kotlin \xe2\x80\x94 的忠实粉丝,我是想要利用 lambda 和闭包的力量来非常顺利地使用一些东西。\n所以我想出了这个实现,希望对你有帮助

\n

第 1 步:创建名为 SafeClickListener.kt 的类

\n
class SafeClickListener(\n\nprivate var defaultInterval: Int = 1000,\nprivate val onSafeCLick: (View) -> Unit\n ) : View.OnClickListener {\nprivate var lastTimeClicked: Long = 0\noverride fun onClick(v: View) {\n    if (SystemClock.elapsedRealtime() - lastTimeClicked < defaultInterval) {\n        return\n    }\n    lastTimeClicked = SystemClock.elapsedRealtime()\n    onSafeCLick(v)\n     } \n }\n
Run Code Online (Sandbox Code Playgroud)\n

第 2 步:添加扩展功能以使其适用于任何视图,这将创建一个新的 SafeClickListener 并将工作委托给它。

\n
    fun View.setSafeOnClickListener(onSafeClick: (View) -> Unit) {\n    val safeClickListener = SafeClickListener {\n        onSafeClick(it)\n      }\n    setOnClickListener(safeClickListener)\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

步骤3:现在使用起来非常容易。只需将button1.setonclicklistner 替换为setSafeOnClickListener 即可。

\n
settingsButton.setSafeOnClickListener {\n    showSettingsScreen()\n}\n
Run Code Online (Sandbox Code Playgroud)\n