操作栏被隐藏,之后立即显示

Action bar is hidden and that shown instantly after that

我正在尝试在用户点击 activity 时切换 show/hide 操作栏,所以我在 activity:

中实现了这样的功能
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    Log.d("ACTION BAR", "triggered");

    super.dispatchTouchEvent(ev);

    ActionBar actionBar = getSupportActionBar();
    actionBar.hide();

    if (actionBar.isShowing()) {
        actionBar.hide();
    } else {
        actionBar.show();
    }

    return true;
}

但是,问题是当单击 activity 时,操作栏被隐藏,但随后立即再次显示。我添加了日志记录,这个方法似乎被触发了两次,为什么?

我认为 dispatchTouchEvent 可能会在触地和向上动作时被调用两次,所以在显示操作栏之前取一个布尔标志并检查该标志值:

private boolean isManuallyHideShownActionBar;

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    super.dispatchTouchEvent(ev);

    ActionBar actionBar = getSupportActionBar();

    if(!isManuallyHideShownActionBar){
        if (actionBar.isShowing()) {
            actionBar.hide();
        } else {
            actionBar.show();
        }
        isManuallyHideShownActionBar = true;
    }else{
        isManuallyHideShownActionBar = false;
    }

    return true;
}