2017-09-01 2 views
8

Je veux combiner deux drapeaux intention que nous ne Bellow dans AndroidComment combiner des drapeaux d'intention dans Kotlin

Intent intent = new Intent(this, MapsActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); 

J'ai essayé de faire quelque chose comme ça, mais ça n'a pas marché pour moi

val intent = Intent(context, MapActivity::class.java) 
intent.flags = (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK) 

Répondre

14

Explication:

L'opération qui est appliquée aux indicateurs est un ou bit. En Java, vous avez l'opérateur | pour cela.

Comme des opérations [en Kotlin au niveau du bit], il es pas de caractères spéciaux pour eux, mais je viens de nommer les fonctions qui peuvent être appelées sous forme infixe.

Source

Voici une liste de toutes les opérations au niveau du bit pour Int et Long

  • shl(bits) - changement signé à gauche (Java de <<)
  • shr(bits) - décalage à droite signé (Java de >>)
  • ushr(bits) - décalage à droite non signé (Java de >>>)
  • and(bits) - bitwise et (Java de &)
  • or(bits) - bitwise ou (| de Java)
  • xor(bits) - XOR au niveau du bit (Java de ^)
  • inv() - inversion au niveau du bit (Java de ~)

Solution:

Donc, dans votre cas, vous n'avez qu'à appeler or entre vos arguments comme ça.

intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK 
1

Essayez quelque chose comme suit:

val intent = Intent(this, MapsActivity::class.java) 
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK