在处理第一次点击之前,如何在菜单选项上禁用多次点击?
答案 0 :(得分:4)
您可以按代码设置可见性或启用/禁用项目。
MenuItem item = menu.findItem(R.id.your_item);
item.setVisible(true);
item.setEnabled(false);
当然你必须检查是否启用oder禁用图标。
答案 1 :(得分:1)
Psuedo / Android回答:
private boolean clicked = false;
@Override
public onClick(View v){
if(!clicked){
clicked = true;
// do your processing - one click only
super.onClick();
}
}
修改的
第一次点击后,您可以拨打yourView.setOnClickListener(null);
以删除onClick
答案 2 :(得分:0)
我知道这是一个老问题,但是我想分享一种被动的方法。
片段/活动 onOptionsItemSelected:
if (item.getItemId() == yourId) {
viewModel.showTopUp()
return true;
}
return super.onOptionsItemSelected(item);
在ViewModel中创建一个PublishSubject并限制请求以防止多次单击:
private PublishSubject<Context> topUpClicks = PublishSubject.create();
public void showTopUp(Context context) {
topUpClicks.onNext(context);
}
private void handleTopUpClicks() {
disposables.add(topUpClicks.throttleFirst(1, TimeUnit.SECONDS)
.doOnNext(transactionViewNavigator::openTopUp)
.subscribe());
}