2015-11-01 3 views
1

Ceci est une partie de mon code:onLongClick ne devrait se produire si la condition est vrai

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

Il décrit un comportement au sein onMarkerClick sur un GoogleMapMarker.

Ce que je veux arriver est pour le ContextMenu d'ouvrir seulement lorsque user.getUserID() est égal à thisLike.getUserID()

J'ai essayé d'ajouter markerImage.setOnLongClickListener(null); sur les deux déclarations d'autre. Ça n'a pas marché ..

Répondre

1

Bien que cette solution n'est pas parfait ... J'ai ajouté si vérifier à onCreateContextMenu comme ceci:

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

Il est enfin si la respecte vérification, mais je aime toujours savoir pourquoi le if-check pour onLongClick n'aide pas.

0

Appliquez la logique suivante.

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

Essayé, mais n'a pas fonctionné .. – user1736049