[英]How to handle multiple clicks
在询问之前,我进行了搜索,但没有成功。
我在尝试处理我的 android 应用程序中按钮的多次点击时遇到了一些麻烦。
问题是,当向按钮发送垃圾邮件时,我导航到另一个片段。 所以垃圾邮件按钮导致导航崩溃。
我尝试了几种解决方案,但我发现没有一个对我有用。 我试图: - 禁用按钮 - 处理状态( boolean
)
实际上,我有导航崩溃“此 navController 不知道navController
”我希望当我向按钮发送垃圾邮件时,它第一次工作,但其他时候,它被阻止了。
这里有一些代码:
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");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.