2017-09-01 1 views
8

ich zwei Absicht Flaggen kombinieren möchten, wie wir in Android unten tunWie Intent Flaggen in Kotlin kombinieren

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

Ich versuchte, so etwas wie dies zu tun, aber es nicht

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

Antwort

14

Erläuterung:

Die Operation, die auf die Flags angewendet wird, ist bitweise oder. In Java haben Sie den Operator | dafür.

Ab bitweise Operationen [in Kotlin], gibt es keine Sonderzeichen für sie, aber nur Funktionen mit dem Namen, der in Infix Form aufgerufen werden kann.

Source

Hier ist eine Liste aller Bit-Operationen für Int und Long

  • shl(bits) - signed Verschiebung nach links (Java <<)
  • shr(bits) - unterzeichnet Verschiebung nach rechts (Java >>)
  • ushr(bits) - unsigned Verschiebung nach rechts (Java >>>)
  • and(bits) - bitweise und (Java &)
  • or(bits) - bit- oder (Java |)
  • xor(bits) - bitweise xor (Java ^)
  • inv() - bitweise Inversion (Java ~)

Lösung:

Also, in Ihrem Fall müssen Sie nur or zwischen Ihren Argumenten so aufrufen.

intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK 
1
für mich arbeiten

so etwas wie folgt Versuchen:

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