onLongClick 只应在条件为真时发生

onLongClick should only happen if condition is true

这是我的代码的一部分:

        if(user.getUserID().equals(thisLike.getUserID())) {
            Log.i("On MARKER click", "Equal User ID!");
            Toast.makeText(getApplicationContext(), R.string.longpress, Toast.LENGTH_SHORT).show();
            markerImage.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    Log.i("On MARKER click", "onLongClick HAPPENS!");
                    if(user.getUserID().equals(thisLike.getUserID())) {
                        Log.i("On MARKER click", "Equal User ID!");
                        openContextMenu(markerImage);
                        return true;
                    } else {
                        Log.i("On MARKER click", "Not equal User ID!!");
                        return false;
                    }
                }
            });
        } else {
            Log.i("On MARKER click", "F...off!");
            return false;
        }

它描述了 onMarkerClickGoogleMap Marker 上的一些行为。

我想要的是 ContextMenu 仅在 user.getUserID() 等于 thisLike.getUserID()

时打开

我试过在两个 else 语句中添加 markerImage.setOnLongClickListener(null);。没用..

虽然此解决方案并不完美...我已将 if-check 添加到 onCreateContextMenu,如下所示:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    if(user.getUserID().equals(thisLike.getUserID())) {

        menu.setHeaderTitle("Image options");
        getMenuInflater().inflate(R.menu.context_menu_image, menu);
    }
}

它终于尊重 if-check,但我仍然想知道为什么 onLongClick 的 if-check 没有帮助。

应用以下逻辑。

if (false){
    setOnLongClickListener(null)
    } else{
    // Implement your own listener
    }