如何在android中禁用菜单选项的多次单击

时间:2011-05-04 11:20:23

标签: android menu onclick

在处理第一次点击之前,如何在菜单选项上禁用多次点击?

3 个答案:

答案 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());
}