如何在 Kotlin 中组合 Intent 标志

我想结合两个意图标志,就像我们在Android中所做的那样:

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

我尝试做这样的事情,但它对我不起作用:

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

答案 1

解释:

应用于标志的操作是按位 or。在Java中,你有运算符。|

从按位运算(在Kotlin中)开始,它们没有特殊字符,而只是可以以中缀形式调用的命名函数。

下面列出了 和 的所有按位操作IntLong

  • shl(bits)– 签名的左移(Java的<<)
  • shr(bits)– 签名的右移(Java的>>)
  • ushr(bits)– 无符号右移(Java的>>>)
  • and(bits)– 按位和(Java的&)
  • or(bits)– 按位或(Java的|)
  • xor(bits)– 按位异或(Java的^)
  • inv()– 按位反转(Java的~)

溶液:

因此,在您的情况下,您只需要像这样在参数之间调用即可。or

intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK

答案 2

请尝试类似下面的操作:

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

推荐