只有条件为真时才会发生onLongClick

时间:2015-11-01 14:31:27

标签: android imageview onlongclicklistener

这是我的代码的一部分:

        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;
        }

它描述了onMarkerClick GoogleMap Marker内的一些行为。

我想要发生的事情是ContextMenu仅在user.getUserID()等于thisLike.getUserID()时才会打开

我尝试在其他两个语句中添加markerImage.setOnLongClickListener(null);。没工作..

2 个答案:

答案 0 :(得分:1)

虽然此解决方案并不完美......我已将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没有帮助。

答案 1 :(得分:0)

应用以下逻辑。

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