Android onOptionsItemSelected避免双击

问题描述 投票:2回答:3

如何避免双击我的例子,任何解决方案?

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.testing) {
                Dialog();
    return super.onOptionsItemSelected(item);
}
android android-menu
3个回答
2
投票

有很多方法可以实现这一目标。我只是举例说明。

只需在Activity类中创建一个布尔变量。

Boolean isClicked = false;

然后

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.testing) {
    if (!isClicked){
//Change here as your flag is true
isClicked = true;
                    Dialog();
    }
        return super.onOptionsItemSelected(item);
    }

然后此对话框仅显示一次。如果需要任何更改请询问。


0
投票

可悲的是,但以下选项中没有任何内容对我有用..

  1. 禁用视图可引发性 - 对于“MAD CLICKER”来说似乎太慢了
  2. 在点击上设置一些布尔值(如isClicked为true)并在onClickListener中检查它 - 看起来很快,但还不够

最后得到了一个方法,可以防止菜单项上的“疯狂双击行为”,这比双击简单按钮,imo更糟糕。

//定义Fragment / Activity变量

volatile private byte saveClickCounter = 0;

// 实行

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    switch (id) {            
        case R.id.common_action_save:

            if (saveClickCounter++ == 0) {
                saveButtonClick();
            } else {
                Log.i(TAG, "OMG! U R fast!");
            }

            return true;
    }

    return super.onOptionsItemSelected(item);
}

在成功调用方法之后,不要忘记再次使该变量等于零(或减少该变量)。

saveClickCounter--;


0
投票

另一个简单的方法与@AlexV类似,使用增量运算符

创建一个全局变量

private var saveClickCounter: Int = 0

在onOptionsItemSelected中

val id = item.itemId
    if (id == R.id.save)
    {
        if (saveClickCounter == 0) {
            Log.d(TAG, "clickedd")
            saveClickCounter++
        } else {
            Log.d(TAG, "OMG! U R fast!");
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.