Android 如何处理多次点击
在询问之前,我做了一次搜索,但没有成功 我在android应用程序中尝试多次点击按钮时遇到了一些麻烦 问题是,当我滥发这个按钮时,我会导航到另一个片段。 所以,垃圾邮件按钮导致导航崩溃 我尝试了一些解决方案,但我发现没有一个对我有效。 我试图: -禁用按钮 -使用状态(Android 如何处理多次点击,android,android-studio,kotlin,Android,Android Studio,Kotlin,在询问之前,我做了一次搜索,但没有成功 我在android应用程序中尝试多次点击按钮时遇到了一些麻烦 问题是,当我滥发这个按钮时,我会导航到另一个片段。 所以,垃圾邮件按钮导致导航崩溃 我尝试了一些解决方案,但我发现没有一个对我有效。 我试图: -禁用按钮 -使用状态(boolean)处理 实际上,我有导航崩溃“blblbl对此导航控制器是未知的” 我希望当我垃圾邮件按钮,第一次它的工作,但其他时间,它被阻止 下面是一些代码: override fun onOptionsItemSelected
boolean
)处理
实际上,我有导航崩溃“blblbl对此导航控制器是未知的”
我希望当我垃圾邮件按钮,第一次它的工作,但其他时间,它被阻止
下面是一些代码:
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
R.id.action_next -> validateAndNavigateTo(R.id.action_intervention_product_fragment_to_intervention_summary_fragment)
R.id.action_validate -> validateAndNavigateTo(getActionId())
else -> {
if (!isFromSummary) interventionProductViewModel.saveMemoryProductsInDatabase()
interventionProductViewModel.emptyListSelectedChemicalProducts()
super.onOptionsItemSelected(item)
}
}
private fun validateAndNavigateTo(actionId: Int): Boolean {
if (validate()) {
val bundle = Bundle().apply {
putString(INTERVENTION_ID, interventionId)
if (arguments?.getString(USE_CASE) != null) {
putString(USE_CASE, arguments?.getString(USE_CASE))
putString(FILTER_BY_FIELD_CODE_SERVER, arguments?.getString(FILTER_BY_FIELD_CODE_SERVER))
}
putString(FILTER_BY_FIELD_CODE_SERVER, arguments?.getString(FILTER_BY_FIELD_CODE_SERVER))
}
interventionProductViewModel.saveMemoryProductsInDatabase()
getKoin().getOrCreateScope(SCOPE_FIELD).close()
view?.findNavController()?.navigate(actionId, bundle)
}
return true
}
谢谢大家的帮助。当您从一个目的地导航到另一个目的地时,请尝试此代码。
下面的代码是用java编写的,一旦您复制并粘贴,编辑器将自动将其转换为Kotlin
public static void navigate(View view, @IdRes int destination, @Nullable Bundle args, NavOptions navOptions) {
try {
Navigation.findNavController(view).navigate(destination, args, navOptions);
} catch (IllegalArgumentException e) {
Log.e(TAG, "Multiple navigation attempts handled here");
}
}
分享你的部分代码以澄清你的问题你现在可以看到一些代码。我已经尝试过了,它在某些情况下是有效的,但它就像隐藏错误一样,对我的团队来说,这不是最好的选择/实践。。